二叉树先序遍历 递归 非递归
先序遍历的操作如下:
1)访问根节点;
2)先序遍历左子树;
3)先序遍历右子树;
对应的递归算法如下:
void PreOrder(Bitree T) { if (T != NULL) { visit(T); PreOrder(T->lchild); PreOrder(T->rchild); } }
对应的非递归算法如下:
void PreOrder2(Bitree T) { //借助栈实现 InitStack(S); Bitree p = T; //初始化栈,p是遍历指针 while (p || !IsEmpty(S)) { if (p) { Push(S, p); visit(p); //访问根节点 p = p->lchild; //遍历左子树 } else { Pop(S, p); p = p->rchild; //遍历左子树 } } }
相关推荐
steeven 2020-11-10
Tips 2020-10-14
nongfusanquan0 2020-08-18
yedaoxiaodi 2020-07-26
清溪算法君老号 2020-06-27
pengkingli 2020-06-25
yishujixiaoxiao 2020-06-25
清溪算法 2020-06-21
RememberMePlease 2020-06-17
nurvnurv 2020-06-05
SystemArchitect 2020-06-02
码墨 2020-05-29
清溪算法 2020-05-27
choupiaoyi 2020-05-27
清溪算法 2020-05-25
bluewelkin 2020-05-19
dbhllnr 2020-05-15
steeven 2020-05-09
baike 2020-05-09