[Leetcode]Binary Tree Iterative Traversal
来源:互联网 发布:文字读取软件 编辑:程序博客网 时间:2024/06/06 00:19
Three problems of binary tree traversal of Leetcode:
Pre-order: http://oj.leetcode.com/problems/binary-tree-preorder-traversal/
In-order: http://oj.leetcode.com/problems/binary-tree-inorder-traversal/
Post-order: http://oj.leetcode.com/problems/binary-tree-postorder-traversal/
Pre-order Traversal
/** * 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) { stack<TreeNode*> st; vector<int> res; TreeNode *now = root; while (now || !st.empty()) { if (!now) { now = st.top(); st.pop(); } while (now) { res.push_back(now -> val); st.push(now -> right); now = now -> left; } } return res; }};
In-order Traversal:
/** * 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> inorderTraversal(TreeNode *root) { stack<TreeNode*> st; vector<int> res; TreeNode *p = root; while (p || !st.empty()) { while (p) { st.push(p); p = p -> left; } if (!st.empty()) { TreeNode *now = st.top(); st.pop(); res.push_back(now -> val); p = now -> right; } } return res; }};
Post-order Traversal:
/** * 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) { stack<TreeNode*> st; vector<int> res; if (!root) return res; TreeNode *pre = NULL; st.push(root); while (!st.empty()) { TreeNode *cur = st.top(); if ( (!cur -> left && !cur -> right) || (pre && (pre == cur -> left || pre == cur -> right))) { res.push_back(cur -> val); st.pop(); pre = cur; } else { if (cur -> right) st.push(cur -> right); if (cur -> left) st.push(cur -> left); } } return res; }};
0 0
- [Leetcode]Binary Tree Iterative Traversal
- [Index]Binary Tree Iterative Traversal
- LeetCode Binary Tree Traversal
- LeetCode | Binary Tree Traversal
- 【leetcode】Binary Tree Traversal
- Iterative Tree Traversal
- Leetcode - Tree - Binary Tree Traversal
- LeetCode: Binary Tree Inorder Traversal
- [LeetCode]Binary Tree Inorder Traversal
- LeetCode Binary Tree Inorder Traversal
- [Leetcode] Binary Tree Inorder Traversal
- Leetcode: Binary Tree Inorder Traversal
- LeetCode Binary Tree Inorder Traversal
- LeetCode Binary Tree Postorder Traversal
- LeetCode Binary Tree Preorder Traversal
- LeetCode : Binary Tree Inorder Traversal
- [Leetcode] Binary Tree Inorder Traversal
- 【leetcode】Binary Tree Inorder Traversal
- 面试-面试题1
- J2EE服务器开发入门概念汇总
- C# 输入一个数字,判断大于或者小于随机数——猜钱游戏
- android activity生命周期的透彻理解
- Android中添加Options Menu,按MENU键无反应
- [Leetcode]Binary Tree Iterative Traversal
- 复杂产品的响应式设计
- C# 从路径中获取文件名及其扩展名
- charles移动抓包
- Eclipse和MyEclipse光标变成黑色块解决办法
- 第5周作业-时钟动画程序
- 黑马程序员 第19天 多态的成员特点 示例-主板
- cocos2d-x 3.0的clone函数
- 12306模拟get方法 ——json解析数据