leetcode Binary Tree Postorder Traversal
来源:互联网 发布:29岁电工自学编程行骗 编辑:程序博客网 时间:2024/06/05 05:32
题目要求利用迭代算法,也即非递归方法实现二叉树的后序遍历
算法中主要利用了栈
代码
//迭代算法 后序遍历 vector<int> postorderTraversal(TreeNode *root) { vector<int> res;stack<TreeNode*> stackTreeNodes;if(root == NULL)return res;stackTreeNodes.push(root); TreeNode *pre, *cur;pre = NULL;cur = root;while(!stackTreeNodes.empty()){cur = stackTreeNodes.top();if((cur->left==NULL&&cur->right==NULL)||((pre!=NULL)&&(pre == cur->left||pre == cur->right))){res.push_back(cur ->val);stackTreeNodes.pop();pre = cur;}else{if(cur->right!=NULL)stackTreeNodes.push(cur->right);if(cur->left!=NULL)stackTreeNodes.push(cur->left);}}return res; }
先序与中序的非递归算法如下
//迭代算法 先序遍历vector<int> preorderTraversal(TreeNode * root){vector<int> res;stack<TreeNode *>stackTreeNodes;if(root==NULL)return res;TreeNode * cur;cur = root;stackTreeNodes.push(root);while(!stackTreeNodes.empty()){cur = stackTreeNodes.top();res.push_back(cur->val);stackTreeNodes.pop();if(cur->right!=NULL)stackTreeNodes.push(cur->right);if(cur->left!=NULL)stackTreeNodes.push(cur->left);}return res;}
//迭代算法 中序遍历vector<int> inorderTraversal(TreeNode * root){vector<int> res;stack<TreeNode *> stackTreeNodes;TreeNode * cur = root;while(!stackTreeNodes.empty()||cur!=NULL){while(cur!=NULL){stackTreeNodes.push(cur);cur = cur->left;}if(!stackTreeNodes.empty()){cur = stackTreeNodes.top();res.push_back(cur->val);stackTreeNodes.pop();cur = cur->right;}}return res;}
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
- 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
- 【LeetCode】Binary Tree Postorder Traversal
- ASP.NET MVC学习---(三)EF简单增删改查
- 学习笔记_JFame事件处理的三种方法(3)类直接实现接口法
- intel vtune的安装与使用
- VLD也不过如此
- Struts2学习笔记(七) 结果(Result)(上)
- leetcode Binary Tree Postorder Traversal
- HTTP 发送特殊字符 &
- hdu 4902 Nice boat--2014 Multi-University Training Contest 4
- 桟和队列--约瑟夫问题
- 判断文本框、组合框是否为空
- 查询Oracle 数据库中带有lob字段的某一个表的大小
- centos6.5安装谷歌浏览器
- Java Web 数据库链接
- 黑马程序员——修饰符