typedef struct BiTNode{
int visited; //控制遍历方式
int data;
struct BiTNode *lchild, *rchild;
struct BiTNode *parent;
}BiTNode, *BiTree;
//免责申明:本代码为伪代码,仅供本人记录学习
void PreOrder(BiTree T){
BiTree p=T;
int count=0; //控制遍历时各结点只输出一次
while(p&&p->visited==false){
if(count==0){
print(p);
count++;
}
if(p->lchild&&p->lchild->visited==false){
p=p->lchild;
count--;
}
else if(p->rchild&&p->rchild->visited==false){
p=p->rchild;
count--;
}
else{
p->visited=true;
p=p->parent;
}
}
}
非递归非栈先序遍历,采用visited标记及parent指针实现
于 2023-08-26 22:30:01 首次发布