我理解树遍历和实现背后的想法,但这是问题。 为什么我们都需要它们?
现在我只知道在解析数学表达式时使用了前序遍历。 从维基百科我也读过:
但这些例子相当含糊。任何人都可以更深入地描述这一点。特别是举例。
答案 0 :(得分:5)
考虑在目录树上执行某些文件操作的问题。当操作删除文件时,您需要在删除目录之前清空每个目录,因此需要进行后期遍历。相比之下,复制层次结构时,需要先复制目录,然后才需要进行预订遍历。
老实说,我不明白有关BST有序遍历的含糊不清。当您想在用户界面中在屏幕上显示BST的内容时,您希望键显示已排序,不是吗? (如果你没有,那么使用BST可能是一个坏主意,因为哈希表通常更快。)
答案 1 :(得分:3)
我可以想到很多例子。以性能为例。
想象一下现实生活中的一棵树。它有一个茎,茎有3个分支。每个内部分支具有3个外部分支。所以它有9个外部分支。
3个内部分支中的一个已死亡,随后其3个外部分支也已死亡。
现在你要削减所有枯枝。树有13个分支(1个茎3个内部,9个外部)。您是否必须单独查看它们以确定是否要切割它们?否
现在想象一下,有一个机器人想要切断所有枯枝。 在它的软件中,它看着干......它死了吗?不,它然后看第一个内部分支是否死了?是!然后它将切断那个分支,同时它的外部分支将被切断。
而不是做出13个选择它只需要做出10个。(茎,2个健康的内部分支,它们的6个外部分支和生病的内部分支)