题意:给出了一颗二叉树,求二叉树的前序遍历和后序遍历,题中要求尽量使用非递归方法遍历

后序遍历递归代码:

/*** Definition for binary tree* struct TreeNode {*     int val;*     TreeNode *left;*     TreeNode *right;*     TreeNode(int x) : val(x), left(NULL), right(NULL) {}* };*/
class Solution {
public:void dfs(vector<int> &vec,TreeNode *root){if(root->left!=NULL) dfs(vec,root->left);if(root->right!=NULL) dfs(vec,root->right);vec.push_back(root->val);}vector<int> postorderTraversal(TreeNode *root){vector<int> vec;if(root!=NULL) dfs(vec,root);return vec;}
};

非递归代码:

/*** Definition for binary tree* struct TreeNode {*     int val;*     TreeNode *left;*     TreeNode *right;*     TreeNode(int x) : val(x), left(NULL), right(NULL) {}* };*/
class Solution {
public:vector<int> postorderTraversal(TreeNode *root){vector<int> vec;stack<int> num;stack<TreeNode*> st;if(root!=NULL) st.push(root);TreeNode *node;while(!st.empty()){node=st.top();st.pop();if(node->left!=NULL) st.push(node->left);if(node->right!=NULL) st.push(node->right);num.push(node->val);}while(!num.empty()){vec.push_back(num.top());num.pop();}return vec;}
};

先序遍历递归代码:

/*** Definition for binary tree* struct TreeNode {*     int val;*     TreeNode *left;*     TreeNode *right;*     TreeNode(int x) : val(x), left(NULL), right(NULL) {}* };*/
class Solution {
public:void dfs(vector<int> &vec,TreeNode *root){vec.push_back(root->val);if(root->left!=NULL) dfs(vec,root->left);if(root->right!=NULL) dfs(vec,root->right);}vector<int> preorderTraversal(TreeNode *root){vector<int> vec;if(root!=NULL) dfs(vec,root);return vec;}
};

先序遍历非递归代码:

/*** Definition for binary tree* struct TreeNode {*     int val;*     TreeNode *left;*     TreeNode *right;*     TreeNode(int x) : val(x), left(NULL), right(NULL) {}* };*/
class Solution {
public:vector<int> preorderTraversal(TreeNode *root){vector<int> vec;stack<TreeNode*> st;TreeNode *node;while(root||!st.empty()){while(root){st.push(root);vec.push_back(root->val);root=root->left;}root=st.top();st.pop();root=root->right;}return vec;}
};

[leetcode]Binary Tree Postorder TraversalBinary Tree Preorder Traversal相关推荐

  1. [LeetCode] Binary Tree Postorder Traversal 二叉树的后序遍历

    Given a binary tree, return the postorder traversal of its nodes' values. For example: Given binary ...

  2. LeetCode 145. Binary Tree Postorder Traversal

    原题链接在这里:https://leetcode.com/problems/binary-tree-postorder-traversal/ 题目: Given a binary tree, retu ...

  3. [LeetCode 题解]: Binary Tree Preorder Traversal

    前言 [LeetCode 题解]系列传送门:  http://www.cnblogs.com/double-win/category/573499.html 1.题目描述 Given a binary ...

  4. 【二叉树的迭代版后序遍历】LeetCode 145. Binary Tree Postorder Traversal

    LeetCode 145. Binary Tree Postorder Traversal Solution1:递归版答案 二叉树的后序遍历递归版是很简单的,关键是迭代版的代码既难理解又难写!但听了花 ...

  5. 【二叉树迭代版前序遍历】LeetCode 144. Binary Tree Preorder Traversal

    LeetCode 144. Binary Tree Preorder Traversal Solution1:递归版 二叉树的前序遍历递归版是很简单的,前序遍历的迭代版相对是最容易理解的. 迭代版链接 ...

  6. leetcode 971. Flip Binary Tree To Match Preorder Traversal

    leetcode 971. Flip Binary Tree To Match Preorder Traversal 题意:给一颗二叉树,再给一个的数组,能否通过交换两个左右两个子节点,使得二叉树的前 ...

  7. 【LeetCode】971. Flip Binary Tree To Match Preorder Traversal

    题目地址: 971. Flip Binary Tree To Match Preorder Traversal 解析 本题是关于二叉树翻转的题目,给定一个二叉树,对于其中的一个节点的翻转定义为该节点的 ...

  8. [leetcode] Binary Tree Preorder Traversal

    Given a binary tree, return the preorder traversal of its nodes' values. For example: Given binary t ...

  9. leetcode 144. Binary Tree Preorder Traversal

    Given a binary tree, return the preorder traversal of its nodes' values. For example: Given binary t ...

最新文章

  1. Goods:图书模块按分类查询各层实现
  2. TypeError: ‘BasePermissionMetaclass‘ object is not iterable
  3. 【C++】Visual Studio教程(六) -更新Visual Studio
  4. Druid-基本概念
  5. ESP8266代码分析
  6. 深入浅出 Java 中的包装类
  7. 三个球A,B,C大小形状相同,且其中有一个球与其他球的重量不同,要求找出这个不一样的球
  8. JavaScript中实现类似StringBuilder的功能
  9. 企业局域网内如何跨网安全传输数据
  10. 网络安全之iptables 实验篇一
  11. 数字图像相关基础知识
  12. SSM+高校学生综合评测系统 毕业设计-附源码200851
  13. visual paradigm 绘图学习记录
  14. Jetson Nano安装ROS错误合集
  15. 浅谈如何加强企业成本管理
  16. PostgreSQL查询 动态输入参数
  17. java正则校验密码 长度不少于8位且至少包含大写字母、小写字母、数字和特殊符号中的四种组合 或者 其中任意三种组合
  18. type-c英文怎么读音发音,type-c怎么读英语发音
  19. style计算机词汇,法语词汇学习:计算机及网络词汇(3)
  20. 2021极客大挑战WP集合

热门文章

  1. Latex报错:Missing $ inserted
  2. TensorFlow 关闭日志打印
  3. html5 流星雨,canvas简单流星雨
  4. Mysql的介绍和软件环境的部署
  5. HTML怎么引用QQ相册的照片,qq空间照片打不开 为什么QQ空间里的相册打不开?
  6. USB存储设备(如:U盘,移动硬盘)
  7. 在iPhone里玩电路设计:3D版电子电路沙盒上线,支持Arduino,真实还原1000+组件...
  8. 电路Circuit-Chapter 13 Three-Phase Circuits(三相电路)
  9. CdlinuxU盘启动,小白教程,不要再看网上那些乱起八糟的了。
  10. Python实例 一 12306抢票(二) 下单