二叉树的非递归遍历
来源:互联网 发布:暴走大事件下架 知乎 编辑:程序博客网 时间:2024/05/21 13:57
void preOrder(BinTree *root) //非递归前序遍历 { stack<BinTree*> s; BinTree *p=root; while(p!=NULL||!s.empty()) { while(p!=NULL) { cout<<p->data<<" "; s.push(p); p=p->lchild; } if(!s.empty()) { p=s.top(); s.pop(); p=p->rchild; } }}
void inOrder(BinTree *root) //非递归中序遍历{ stack<BinTree*> s; BinTree *p=root; while(p!=NULL||!s.empty()) { while(p!=NULL) { s.push(p); p=p->lchild; } if(!s.empty()) { p=s.top(); cout<<p->data<<" "; s.pop(); p=p->rchild; } } }
void postOrder(BinTree *root) //非递归后序遍历{ if(root == NULL) return res; BinTree *p = root; stack<BinTree *> s; BinTree *last = NULL; s.push(p); while (!s.empty()) { p = s.top(); if( (p->left == NULL && p->right == NULL) || (p->right == NULL && last == p->left) || (last == p->right) ) { cout<<p->data<<" "; last = p; s.pop(); } else { if(p->right) s.push(p->right); if(p->left) s.push(p->left); } }}
1 0
- 二叉树的递归,非递归遍历
- 二叉树的递归+非递归遍历
- 二叉树的递归非递归遍历
- 二叉树的遍历--递归+非递归
- 二叉树的递归、非递归遍历
- 二叉树的递归非递归遍历
- 二叉树的先中后序遍历,递归遍历,非递归遍历
- 二叉树的递归遍历与非递归遍历
- 二叉树的创建,递归遍历,非递归遍历
- 二叉树的递归遍历与非递归遍历
- 二叉树的非递归遍历以及递归遍历
- 二叉树的非递归遍历&递归遍历
- 二叉树的递归遍历和非递归遍历
- 二叉树的递归遍历与非递归遍历
- 二叉树的递归遍历和非递归遍历
- 二叉树的构造,递归遍历,非递归遍历
- 二叉树的遍历(递归+非递归+层次遍历)
- 二叉树的递归遍历与非递归遍历
- 数组和矩阵
- 热修复JSPatch之接口设计
- 【LeetCode题解】338.Counting Bits
- Codeforces 779C-Dishonest Sellers
- python OrderedDict用法
- 二叉树的非递归遍历
- Maven多模块版本规范
- Linux rm 很多文件出现/bin/rm: Argument list too long解决方法
- java 加密之对称加密算法
- 图像绘制
- 小球自由下落
- java根据ip地质调用百度定位api服务获取地理位置示例
- Device Tree设备数(一):背景介绍
- 企业大咖走进华清远见济南中心,倾情分享嵌入式硬件开发秘籍