这是教科书上的一个问题,答案是关于二叉树的。
如果后置遍历访问二叉树的节点,以U,G,T,R,A,I的顺序存储字符值,那么同一棵二叉树的无序遍历的访问顺序是什么?
( a) I、G、U、A、T、R
( b) R、G、U、I、T、A
( c) G、U、I、T、A、R
( d)无法确定
答:C
现在的问题是,C是如何回答的。我意识到,仅进行一次后期遍历并不足以唯一地标识一棵树,而且可以为任何类型的树(不是无序的)定义预顺序遍历和后置遍历,但不能对一棵树进行唯一标识。顺序和顺序后的遍历可以。这个问题并不是专门针对BST的,这样可以产生不同的效果。所以我想我需要澄清关于C的答案,而不是D,这就是我所
您能帮助解释如何根据遍历结果绘制原始二叉树的逻辑吗?我知道预先顺序和顺序遍历,但我不知道从哪里开始这个问题。事先非常感谢!
A binary tree has this pre-order traversal result: A,B,D,H,I,E,F,C,G,K,J (TreeNodes)
And the same tree gives the following in-order traversal: B,H,I,D,A,C,F,E,K,G,J.
Can you draw the tree structure?
给定二叉树,如何将根打印到叶路径,但添加“_”以表示相对位置?
示例:
Input : Root of below tree
A
/ \
B C
/ \ / \
D E F G
Output : All root to leaf paths
_ _ A
_ B
D
_ A
B
_ E
A
_ C
F
A
_ C
_ _ G
假设我们得到了一个水平顺序遍历输出。如何从填充数据的二叉树中构造正确的位置?
请注意,我不是试图从给定的遍历输出中勾勒出树,而是读取数组中的遍历数据,然后用C语言进行实际编码来填充二叉树。
例:
设a[] = {A,B,C,D,E,F,G};//数组中的遍历输出
所以层序树看起来如下:
A
/ \
B C
/ \ / \
D E F G
假设有一个树节点结构,如下所示:
typedef struct node
{
char data;
struct node* left