跟踪递归方法的进度

Eri*_*tas 5 tree recursion data-structures

我正在编写一个使用树结构的应用程序,所以当然我有一些递归方法会迭代树的每个节点并做一些事情.问题是有时这些需要一段时间,而我宁愿向用户显示某种进度条,而不是程序停止响应一段时间.

如果我在一个平面列表中进行迭代,我知道列表中有多少项是开始的,因此很容易跟踪循环所在的数字并相应地更新进度条.

但是,通过迭代树结构的递归方法,我不一定知道树在开始时有多少个节点.我应该首先递归地读取树并在运行实际的递归方法之前计算所有节点,这样做我想做什么吗?或者可能只是在树中添加或删除节点时跟踪运行总计?有更好的选择吗?

Mar*_*off 3

解决此问题的常见方法是显示正在变化的进度条,但不更新实际百分比。例如,Firefox 中的小加载图标是一个正在旋转的圆圈——您知道它正在做某事但您不知道它会花费多长时间。也许只需这样做并添加一条消息“这可能需要一些时间,具体取决于有多少数据......”