中序遍历诀窍 用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
return
}
void main()//主函数
{
]struct bitnode*P,*t
稍后(P)
print(P)
}
知树的前序遍历,后序遍历,怎么求中序遍历?
首先了解概念:前序遍历:访问根节点的操作发生在遍历其左右子树之前。中间顺序遍历:访问根节点的操作发生在遍历其左右子树时。后序遍历:访问根节点的操作发生在遍历其左右子树之后。例:遍历dbcefgha后,为了遍历edcbahfg,先查找前序遍历(联机示例)解决方案:遍历dbcefgha后,先看a是总根节点,然后按顺序遍历edcbahfg找到a的位置,然后edcb在a的左分支,HFG在a的右分支。重复前两步,查找从最后一个位置对应点进行遍历后,依次找到左右分支进行遍历,最后得到aecdbhgf,然后自己验证
版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。