二叉树的遍历
来源:互联网 发布:淘宝怎么搜索旺旺号 编辑:程序博客网 时间:2024/06/06 20:31
先序遍历
1。先遍历根节点,在把右孩子入栈,在把左孩子入栈(最先入栈的右孩子,最后出栈,最后遍历)
2。如果栈不为空,则出栈,并重复第一步。
void preOrderTraverse(BiTree T){ InitStack(S); Push(S,T); BiNode * p; while(!StackEmpty(S)){ Pop(S,p); visit(p); if(p->rchild!=null) Push(S,p->rchild); if(p->lchild!=null) Push(S,p->lchild); }}
中序遍历
1。从根结点向左遍历并全部入栈,直至无左孩子
2。如果栈不为空,出栈并visit结点,
3。若有右子树,则把右子树作为根结点执行第一步。
void putINStack(BiNode *p,Stack S){ Push(S,p); while(p->lchild!=null){ Push(S,p->lchild); p = p->lchild; }}void InOrderTraverse1(BiNode *p){ InitStack(S); putINStack(p,S); BiNode * q; while(!StackEmpty(S)){ Pop(S,q); visit(q); if(q->rchild!=null) putINStack(q->rchild,S); }}void InOrderTraverse2( BiNode *x) { //二叉树中序遍历算法(迭代版#2) InitStack(S); //辅助栈 while ( true ) if ( x ) { Push(S,x); //根节点进栈 x = x->lc; //深入遍历左子树 } else if ( !StackEmpty() ) { Pop(S,x); //尚未访问的最低祖先节点退栈 visit ( x->data ); //访问该祖先节点 x = x->rc; //遍历祖先的右子树 } else break; //遍历完成}
后续遍历
这里写代码片
阅读全文
0 0
- 二叉树的遍历
- 二叉树的遍历
- 二叉树的遍历
- 二叉树的遍历
- 二叉树的遍历
- 二叉树的遍历
- 二叉树的遍历
- 二叉树的遍历
- 二叉树的遍历
- 二叉树的遍历
- 二叉树的遍历
- 二叉树的遍历
- 二叉树的遍历
- 二叉树的遍历
- 二叉树的遍历
- 二叉树的遍历
- 二叉树的遍历
- 二叉树的遍历
- FZU
- 集装箱数据众包平台中期检查个人总结
- R和RStudio软件安装
- 大数据处理框架的类型、比较和选择
- LeetCode.215 Kth Largest Element in an Array
- 二叉树的遍历
- 面向大数据的分布式调度
- Qt源码编译configure配置参数
- 了解MES
- HDOJ1018 Big Number(斯特林公式求阶乘位数)
- Python语言入门(四)字典与Set集合用法体验
- 深度学习2:为什么深度学习要使用numpy库
- leetcode011-Best Time to Buy and Sell Stock with Transaction Fee
- ASP.NET中UpdatePanel内JS失效的解决办法