Leetcode: Binary Tree Postorder Traversal - 再解
来源:互联网 发布:淘宝大图轮播尺寸 编辑:程序博客网 时间:2024/06/06 04:02
前几天做过,很混乱 http://blog.csdn.net/u013166464/article/details/17455723。
跟前序,中序一块考虑,简单些的解法:
/** * Definition for binary tree * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */ #include <stack> #include <vector> class Solution {public: vector<int> postorderTraversal(TreeNode *root) { vector<int> result; stack<TreeNode*> stack_tree; TreeNode *prev = NULL; while (root != NULL || !stack_tree.empty()) { while (root != NULL) { stack_tree.push(root); root = root->left; } if (!stack_tree.empty()) { root = stack_tree.top(); if (root->right == NULL || root->right == prev) { result.push_back(root->val); prev = root; root = NULL; stack_tree.pop(); } else { root = root->right; } } } return result; }};
=========================第二次============================
标准解法。非递归很重要,不少面试题的变种。
/** * 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> result; stack<TreeNode*> nodes; TreeNode *prev = NULL; while (root != NULL || !nodes.empty()) { while (root != NULL) { nodes.push(root); root = root->left; } if (!nodes.empty()) { root = nodes.top(); if (root->right == NULL || root->right == prev) { result.push_back(root->val); nodes.pop(); prev = root; root = NULL; } else { root = root->right; } } } return result; }};
0 0
- Leetcode: Binary Tree Postorder Traversal - 再解
- LeetCode Binary Tree Postorder Traversal
- LeetCode:Binary Tree Postorder Traversal
- Leetcode: Binary Tree Postorder Traversal
- Leetcode: Binary Tree Postorder Traversal
- LeetCode:Binary Tree Postorder Traversal
- Leetcode Binary Tree Postorder Traversal
- [LeetCode]Binary Tree Postorder Traversal
- [LeetCode] Binary Tree Postorder Traversal
- leetcode Binary Tree Postorder Traversal
- 【LeetCode】Binary Tree Postorder Traversal
- LeetCode | Binary Tree Postorder Traversal
- Leetcode: Binary Tree Postorder Traversal
- Binary Tree Postorder Traversal - LeetCode
- LeetCode - Binary Tree Postorder Traversal
- [LeetCode]Binary Tree Postorder Traversal
- Binary Tree Postorder Traversal -- LeetCode
- [LeetCode]Binary Tree Postorder Traversal
- Django 模板语言:如何重复for loop词典的值
- 【9】coco2d-x事件处理机制二
- Hive的JDBC接口实现(Eclipse环境配置)
- 补遗篇之单行道标志const
- linux中fork函数详解
- Leetcode: Binary Tree Postorder Traversal - 再解
- 判断质数
- Clojure 学习入门(12)—— map/pmap
- 10-排序-03-选择排序
- 文本特征提取方法研究
- NDK开发环境搭建_r8
- 在Windows Azure上基于CentOS 6.3部署MySQL 5.6主从式数据库(1)
- 二叉树的最近父结点的查找(Least Common Ancestor)
- Linux基础.控制台式查看日志