LeetCode OJ: Binary Tree Postorder Traversal
来源:互联网 发布:数据库系统全书第二版 编辑:程序博客网 时间:2024/04/29 09:54
转战LeetCode,开始不适应,只好先从简单的题目开始
Given a binary tree, return the postorder traversal of its nodes' values.
For example:
Given binary tree {1,#,2,3}
,
1 \ 2 / 3
return [3,2,1]
.
Note: Recursive solution is trivial, could you do it iteratively?
分析:看到类方法的返回值是vector<int>,就知道不能用递归了,循环后续遍历二叉树也是当年考研的经典题目了,下面的代码中使用了两个数组栈,操作起来也蛮方便的/** * 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>* v_ptr = new vector<int>; vector<int> vec; if (root == NULL) return vec; else{ const int MAXSIZE = 10000; TreeNode* stack[MAXSIZE]; int mark[MAXSIZE]; int cnt = 0; stack[cnt] = root; mark[cnt] = 0; //当前节点的左右孩子均为未访问 ++cnt; while (cnt != 0){ switch (mark[cnt-1]){ case 0: //若从未被取出过,则访问左孩子 ++(mark[cnt-1]); //标记为取出过一次 if(stack[cnt-1]->left != NULL){ stack[cnt] = stack[cnt-1]->left; mark[cnt] = 0; ++cnt; } break; case 1: //若被取出过一次,则访问右孩子 ++(mark[cnt-1]); //标记为取出过两次 if(stack[cnt-1]->right != NULL){ stack[cnt] = stack[cnt-1]->right; mark[cnt] = 0; ++cnt; } break; case 2: //若被取出过两次,则访问当前结点,并出栈 vec.push_back(stack[cnt-1]->val); --cnt; break; } } return vec; } }};
0 0
- LeetCode OJ:Binary Tree Postorder Traversal
- LeetCode OJ: Binary Tree Postorder Traversal
- LeetCode OJ - Binary Tree Postorder Traversal
- [LeetCode OJ]Binary Tree Postorder Traversal
- LeetCode OJ Binary Tree Postorder Traversal
- LeetCode OJ:Construct Binary Tree from Inorder and Postorder Traversal
- LeetCode OJ --问题与解答 Binary Tree Postorder Traversal
- leetcode OJ -Binary Tree Postorder Traversal(2014.1.20)
- [LeetCode OJ] Binary Tree Postorder Traversal 解题报告
- LeetCode OJ Construct Binary Tree from Inorder and 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
- C++实现简单的文件I/O操作
- ios 使用post上传图片
- 数码摄影色彩管理ABC
- android:windowSoftInputMode属性使用
- GridView生成的HTML代码
- LeetCode OJ: Binary Tree Postorder Traversal
- SQL2005行触发器
- ifup eth0 ERROR /sbin/ifup: line 268: [: : integer expression expected
- 改变计算技术的伟大算法
- linux 查看环境变量和修改环境变量
- FtpWebRequest的常用操作
- Oracle触发器使用介绍
- android.graphics.Paint类详解
- 利用Eclipse开发Linux驱动