树的先序遍历
来源:互联网 发布:什么软件上youtube 编辑:程序博客网 时间:2024/05/09 13:36
递归算法
先序遍历就是首先判断根结点是否为空,为空则停止遍历,不为空则将左子作为新的根结点重新进行上述判断,左子遍历结束后,再将右子作为根结点判断,直至结束。到达每一个结点时,打印该结点数据,即得先序遍历结果。
非递归算法
首先建立一个栈,当指针到达根结点时,打印根结点,判断根结点是否有左子和右子。有左子和右子的话就打印左子同时将右子入栈,将左子作为新的根结点进行判断,方法同上。若当前结点没有左子,则直接将右子打印,同时将右子作为新的根结点判断。若当前结点没有右子,则打印左子,同时将左子作为新的根结点判断。若当前结点既没有左子也没有右子,则当前结点为叶子结点,此时将从栈中出栈一个元素,作为当前的根结点,打印结点元素,同时将当前结点同样按上述方法判断,依次进行。直至当前结点的左右子都为空,且栈为空时,遍历结束。
算法流程图
程序
递归算法
void preOrder(Node *root){ if(0 != root) { printf("%d",root->data); preOrder(root->lChild); preOrder(root->rChild) }}
非递归算法
void PreOrderTraverse(BiTree T){ stack<BiTree>Stack; if(!T) { printf("空树!\n"); return; }}while(T || Stack.empty()){ while(T) { Stack.push(T); printf("%c",T->data); T=T->lchild; } T=Stack.top(); Stack.pop(); T=T->rchild;}}
阅读全文
0 0
- 树的先序遍历
- 树的先序遍历
- 二叉树的先序建立及先序遍历:
- 二叉树的先序遍历
- BOJ212 树的先序遍历
- 二叉树的先序遍历
- 求二叉树的先序遍历
- 求二叉树的先序遍历
- 求二叉树的先序遍历
- 求二叉树的先序遍历
- 求二叉树的先序遍历
- 求二叉树的先序遍历
- C++二叉树的先序遍历
- 求二叉树的先序遍历
- 求二叉树的先序遍历
- 二叉树的先序遍历
- 求二叉树的先序遍历
- 求二叉树的先序遍历
- 怎样在图片未加载完成之前预先获取图片的宽高
- mysql的六中排序
- 自定义手机锁屏界面
- Java三大特征--多态
- 算法总结
- 树的先序遍历
- 一步一步学习Kotlin(二)
- D3D11 物体A绕特定物体旋转及ID3DXMatrixStack配置
- chrome浏览器不能显示本地图片办法解决
- ECMAScript对象--整理
- [LeetCode]581. Shortest Unsorted Continuous Subarray
- C++——模版:类模版
- Cookie与Session的区别
- 回顾接口