二叉树非递归遍历
来源:互联网 发布:mac无法更新系统 编辑:程序博客网 时间:2024/06/16 00:15
树结构
struct TreeNode { int val; TreeNode *left; TreeNode *right; TreeNode(int x) : val(x), left(NULL), right(NULL) {}};
中序遍历
vector<int> midorderTraversal(TreeNode *root){ vector<int> temp; stack<TreeNode *> s; bool left = false; bool right = false; if(root == NULL) return temp; TreeNode* p = root; while(p ||!s.empty()){ if(p != NULL){ s.push(p); p = p->left; }else{ p = s.top(); temp.push_back(p->val); s.pop(); p = p->right; } } vector<int>::const_iterator iter = temp.begin(); while(iter != temp.end()){ cout<<*iter<<"\t"; iter++; } cout<<endl; }前序遍历
vector<int> preorderTraversal(TreeNode *root) { vector<int> temp; stack<TreeNode *> s; s.push(root); if (!root) return temp; while (!s.empty()) { TreeNode *p = s.top(); s.pop(); temp.push_back(p->val); if (p->right) s.push(p->right); if (p->left) s.push(p->left); } vector<int>::const_iterator iter = temp.begin(); while(iter != temp.end()){ cout<<*iter<<"\t"; iter++; } cout<<endl; return temp; }
后序遍历
vector<int> postorderTraversal(TreeNode *root) { vector<int> temp; stack<TreeNode *> s; if(root == NULL) return temp; TreeNode *p = root; s.push(p); while(!s.empty()){ p = s.top(); s.pop(); temp.insert(temp.begin(),p->val); if(p->left != NULL) s.push(p->left); if(p->right != NULL) s.push(p->right); } vector<int>::const_iterator iter = temp.begin(); while(iter != temp.end()){ cout<<*iter<<"\t"; iter++; } cout<<endl; }
0 0
- 非递归遍历二叉树
- 二叉树遍历非递归
- 非递归遍历二叉树
- 二叉树非递归遍历
- 二叉树非递归遍历
- 非递归遍历二叉树
- 二叉树非递归遍历
- 非递归遍历二叉树
- 非递归遍历二叉树
- 非递归遍历二叉树
- 非递归遍历二叉树
- 非递归遍历二叉树
- 二叉树非递归遍历
- 二叉树遍历--非递归
- 二叉树非递归遍历
- 非递归遍历二叉树
- 二叉树非递归遍历
- 二叉树非递归遍历
- Drcom校园网使用VPN代理
- socket
- 贪心算法证明的回忆
- VS 2010 LINK : fatal error LNK1123: 转换到 COFF 期间失败: 文件无效或损坏
- RandomAccessFile 类
- 二叉树非递归遍历
- Objective-C笔记
- 玩转Android Camera开发(二):使用TextureView和SurfaceTexture预览Camera 基础拍照demo
- Sliverligh5 安装问题的解决关于Silverlight_5_tools
- python -- 保留关键字
- 管道流
- CUDA笔记2-循环展开
- 项目总结——深入浅出socket网络编程 (转)
- cocos2d-x 源码分析 : Ref (CCObject) 源码分析 cocos2d-x内存管理策略