中序遍历诀窍 用C语言编程实现二叉树的中序遍历算法?
用C语言编程实现二叉树的中序遍历算法?
#Include
#Include
struct bitnode*stack[100
]struct bitnode//define struct
{
char data
struct bitnode*lchild,*rchild
}
void later(struct bitnode*&)//preorder create tree
{
char Ch
scanf scanf(%C”,&;Ch)
if(Ch=”)
P=null
else{
P=(struct bitnode*)malloc(sizeof(struct bitnode*)bitnode)
P->data=ch
以后(P->lchild)
以后(P->rchild)
}
void print(struct bitnode*P)//前序遍历(输出二叉树)
{
int i=-1
while(1)
{
while P!=null)
]{
堆栈[i]=P->rchild/*printf(”确定?N“)*/
printf(”%C“,P->data)
P=P->lchild
}
如果(I!=-1)
{
P=stack[i
]i-->
else
]}
]void main()//main function
{
]struct bitnode*P,*t
later(P)
print(P)
}
某二叉树的后序遍历序列与中序遍历序列相同?
post order遍历显示e是根节点。在中间顺序中,E的左子树在左边,右子树在右边。我们可以看到左子树只有一个D节点,当我们查看后序遍历中的Acb序列时,我们发现B是右子树的根节点。当我们发现B在中间顺序时,我们发现B没有左子树,也就是说,AC在B的右子树上。我们还知道,在后序遍历中,AC表示a是C的子节点,而AC表示a在C的左子树上,前序是edbca
版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。