赞
踩
void PreQrder(BiTree T){
if(T!=NULL){
visit(T);
PreOrder(T->lchild);
PreOrder(T->rchild);
}
}
O(n),n是结点个数
void InQrder(BiTree T){
if(T!=NULL){
InOrder(T->lchild);
visit(T);
InOrder(T->rchild);
}
}
void PostQrder(BiTree T){
if(T!=NULL){
PostOrder(T->lchild);
PostOrder(T->rchild);
visit(T);
}
}
void InOrder2(BiTree T){
InitStack(S);BiTree p=T;
while(p||!IsEmpty(S)){
if(p){
Push(S,p);//将p压入栈中
p=p->lchild;//p赋值为p左孩子结点
}
else{
Pop(S,p);//p是用来被出栈元素赋值,带出来的
visit(p);
p=p->rchild;
}
}
}
就是一层一层遍历
void LevelOrder(BiTree T){
LinkQueue Q;
InitQueue(Q);//初始化一个队列
BiTree p;//创建一个辅助变量
EnQueue(Q,T);//根结点入队
while(!isEmpty(Q)){
DeQueue(Q,p);//出队队首元素
visit(p);//并访问
if(p->lchild!=NULL)//判断左右子树是否非空
EnQueue(Q,p->lchild);
if(p->rchild!=NULL)
EnQueue(Q,p->rchild);
}
}
前序:开头是根结点,中序:根结点左,左子树;右,右子树
先序遍历:D,然后中序左边EAF,右边HCBGI
EAF中A先,A为根,左边E,右边F;
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。