Algorithm 树遍历。按序、前序、后序

Algorithm 树遍历。按序、前序、后序,algorithm,tree,binary-tree,Algorithm,Tree,Binary Tree,我理解树遍历和实现背后的想法,但问题是。 为什么我们都需要它们 现在我只知道在解析数学表达式时使用了预序遍历。 我还从维基百科上读到: 按序遍历在二叉搜索树上使用按序遍历尤其常见,因为根据设置二叉搜索树的比较器(因此得名),这将按顺序从基础集合返回值。 前序遍历 在将值插入新树的同时,按预先顺序遍历树是生成二叉搜索树完整副本的常见方法。 还可以使用预序遍历从表达式树获取前缀表达式(波兰符号):预序遍历表达式树。(我已经说过) 但这些例子相当模糊。谁能更深入地描述这一点。特别是在示例中。考虑在

我理解树遍历和实现背后的想法,但问题是。 为什么我们都需要它们

现在我只知道在解析数学表达式时使用了预序遍历。 我还从维基百科上读到:

  • 按序遍历在二叉搜索树上使用按序遍历尤其常见,因为根据设置二叉搜索树的比较器(因此得名),这将按顺序从基础集合返回值。 前序遍历
  • 在将值插入新树的同时,按预先顺序遍历树是生成二叉搜索树完整副本的常见方法。 还可以使用预序遍历从表达式树获取前缀表达式(波兰符号):预序遍历表达式树。(我已经说过)

但这些例子相当模糊。谁能更深入地描述这一点。特别是在示例中。

考虑在目录树上执行某些文件操作的问题。当操作是删除文件时,则需要在删除目录本身之前清空每个目录,因此需要进行后序遍历。相比之下,在复制层次结构时,需要先复制目录,然后需要进行预顺序遍历


老实说,我看不出BST在顺序遍历中有什么含糊不清的地方。当您想在用户界面中显示BST屏幕上的内容时,您希望按键按顺序显示,不是吗?(如果没有,那么使用BST可能是个坏主意,因为哈希表通常更快。)

我可以想出许多例子。例如,性能

想象一下现实生活中的一棵树。它有一个茎,茎有三个分枝。每个内部分支都有3个外部分支。所以它有9个外部分支

3个内分支中的一个已死亡,随后其3个外分支也已死亡

现在你要把所有枯枝都剪掉。这棵树有13根树枝(1根干,3根内枝,9根外枝)。您是否需要逐个查看它们以确定是否要剪切它们?没有

现在想象一下,有一个机器人想要砍掉所有枯枝。 在它的软件包中,它看到了茎。。它死了吗?不,然后它会看第一个内部分支,它死了吗?对它就要剪除那枝子,同时也要剪除它的外枝子

它不需要做13个选择,只需要做10个。(茎、2个健康的内枝、6个外枝和患病的内枝)