二叉树3中遍历方法的迭代实现
来源:互联网 发布:淘宝账号怎么升级心 编辑:程序博客网 时间:2024/06/14 00:58
struct TreeNode {int val;struct TreeNode *left;struct TreeNode *right;TreeNode(int x) :val(x), left(NULL), right(NULL) {}};vector<int> preorderTraversal(TreeNode *root){vector<int> result;if (root == nullptr)return result;stack<TreeNode*> s;s.push(root);while (!s.empty()){TreeNode* cur = s.top();s.pop();result.push_back(cur->val);if (cur->right)s.push(cur->right);if (cur->left)s.push(cur->left);}return result;}vector<int> InOrderWithoutRecursion1(TreeNode* root){vector<int> result;if (root == NULL)return result; TreeNode* p = root;stack<TreeNode*> s;while (!s.empty() || p){ while (p){s.push(p);p = p->left;}//当p为空时,说明已经到达左子树最下边,这时需要出栈了 if (!s.empty()){p = s.top();s.pop();result.push_back(p->val);p = p->right;}}}vector<int> postorderTraversal(TreeNode *root){vector<int> result;if (root == nullptr)return result;stack<TreeNode*> s;TreeNode* pre = nullptr;s.push(root);while (!s.empty()){TreeNode* cur = s.top();if ((cur->left == nullptr && cur->right == nullptr) ||(pre != nullptr && (pre == cur->left || pre == cur->right))){result.push_back(cur->val);s.pop();pre = cur;}else{if (cur->right)s.push(cur->right);if (cur->left)s.push(cur->left);}}return result;}
阅读全文
1 0
- 二叉树3中遍历方法的迭代实现
- 二叉树的3中遍历方法(递归和迭代)
- 二叉树中序遍历的迭代实现
- 二叉树前序遍历的迭代实现
- 二叉树后序遍历的迭代实现
- 二叉树的前序、中序、后序遍历—迭代方法
- 二叉树遍历的所有递归和迭代实现
- Java迭代实现二叉树的前序、中序、后序遍历
- Java 二叉树的前序、中序、后续遍历 递归和迭代实现
- 二叉树遍历的迭代算法
- 二叉树遍历的迭代算法
- 根据前序跟中序遍历的结果建立二叉树——迭代和递归的方法
- 迭代遍历二叉树
- 二叉树的创建以及利用迭代实现中序、先序、后序遍历、清空
- 二叉树 前序中序后序层序遍历 迭代、递归方法
- 二叉树的三种遍历方式的递归实现和迭代实现
- 二叉树的几种遍历方法,包括递归和迭代
- 二叉树的四种遍历方法(递归、迭代)
- python 中文注释报错
- Android设置屏幕亮度
- malloc导致core dump
- windows与linux通信文件共享
- C++文件读写详解(ofstream,ifstream,fstream)
- 二叉树3中遍历方法的迭代实现
- c++类的二阶构造
- 第二周—C/C++语言中函数参数传递的三种方式
- Google官方刷题资源
- JavaWeb Filter 检查登录
- Android 中图标的尺寸要求
- Tomcat WebappClassLoader 类加载机制源码分析
- 数据结构上机实践第二周项目1
- OpenGL3.0常用函数详解