- 树的中序遍历
void Inorder(BiTree T){//中序遍历 Initstack(s); BiTree p = T; while(p!=NULL || !isempty(s)) { if(p){ push(s,p); p= p.lchild; } else{ pop(s,p); visit(p); p=p.rchild; } } }
- 树的先序遍历
-
void PreOrder(BiTree T){//前序遍历 Initstack(s); BiTree p = T; while(p!=NULL || !isempty(s)){ if(p){ visit(p); push(s,p); p = p.rchild; } else{ pop(s,p); p=p.lchild; } } }
- 树的后序遍历
-
void PostOrder(BiTree T){//后序遍历 Initstack(s); BiTree p = T; BiTree s = NULL; while(p! = Null || !isempty(s)){ if(p != NULL){ push(p); p = p.lchild; } else{ GetTop(s,p); if(p != NULL && p.rchild != r){ p=p.rchild; push(p); p=p.lchild; } else{ pop(s,p); visit(p->data); r = p; p = NULL; } } } }
- 树的层序遍历
-
void levelOrder(BiTree T){//层序遍历 initqueue(s); BiTree p =T; Enqueue(s,p); while(!isempty(s)) { Dequeue(s,p); visit(p); if(p->lchild != NULL) { Enqueue(s,p->lchild); } else{ Enqueue(s,p->rchild) } } }
关于树的前中后层序遍历(非递归)
最新推荐文章于 2024-09-29 16:46:50 发布