任何人都可以向我解释双顺序遍历吗?
A
/ \
B E
/ \ / \
C D F G
双顺序遍历输出:ABCCBDDAEFFEGG
我对解释而不是代码感兴趣。
谢谢
答案 0 :(得分:5)
假设您对双顺序遍历的解释感兴趣:
对于每次遍历,你
这就是它的全部。如果您没有左子女(例如C),则两个“访问节点”操作会背靠背发生,这就是您在输出中看到两个C的原因。
只是为了将其可视化(输出以粗体显示):
等
答案 1 :(得分:0)
想象一下,你正在走路,从根开始。
等
这只是一种遍历内外的遍历。
在前序遍历中左右儿童的访问之间,你访问根(因为你必须回到它进一步走),你可以认为叶子是没有孩子的根,{{1}只会让你立刻回去(因此连续两次访问叶子,节点只有正确的孩子)。
答案 2 :(得分:0)
递归:
1. Visit root of (sub)tree.
2. Visit left subtree.
3. Revisit root of (sub)tree.
4. Visit right subtree.
Offhand我想不出它的应用程序,虽然我已经做了一些真正奇特的事情,一堆树上的节点(和链接列表)同时出现。
答案 3 :(得分:0)
主要是遍历树的递归方法(这里我们要处理二叉树)
这是用于双顺序遍历的算法:
DoubleDouble算法(根)
如果(root不为NULL)
endif
说明:
最终输出:ABCCBDDAEFFEGG
我希望它可以帮助您理解整体概念!我很高兴第一次回答堆栈溢出问题:)