【发布时间】:2020-08-27 16:05:19
【问题描述】:
网上有很多内容说有四种树遍历算法:
- 深度优先搜索 - 按顺序(左-根-右)
- 预购(根-左-右)
- PostOrder(左-右-根)
- 广度优先搜索 - 级别顺序遍历
这些树的遍历是不是因为二叉搜索树的概念而得到的? (即,左子树小于右子树,因此我们先从左到右?)
树遍历的其他组合呢?例如:Right-Root-Left,Right-Left-Root,Root-Right-Left,按Level-order我们从Right节点遍历?
如果上述树遍历的组合是有效的,那么树遍历的时间复杂度是否会相对于它们的左优先对应物保持相同?
在现实世界的应用程序中,它们是否使用树遍历的右优先组合?举个例子。
【问题讨论】:
-
也可以随机遍历每个节点的子节点。因此,您可以想到许多其他顺序(例如,依赖于子节点的某种值)。因此,这里有 3 个非常常见的遍历命令和许多不那么常见的遍历命令。
-
如果你有一个二叉搜索树,你想以相反的顺序遍历,你会使用“right-root-left”。这只是一个反向中序遍历。而且,是的,它的计算复杂度与传统的中序遍历相同。
-
很好的问题。值得更多的关注和回应。如果 ruakh 在他的回答中所说的关于其他类型的遍历是真的,我想知道为什么没有像他们的同行那样讨论或教授它们。
标签: algorithm binary-tree depth-first-search breadth-first-search tree-traversal