#LeetCode# #C++# Binary Tree Preorder Traversal
2015-10-01 21:57
369 查看
给一个二叉树,返回前驱遍历的节点值
Note:递归容易,迭代呢?
2.递归存root->left
3.递归存root->right
Status: Accepted
2.stack不为空,循环3、4
3.top取一个点ptop,存入vector
4.pop掉ptop,stack存入非空的ptop->right,stack存入非空的ptop->left
5.return vector
Status: Accepted
Note:递归容易,迭代呢?
方法一:递归
1.存root->val2.递归存root->left
3.递归存root->right
Status: Accepted
Runtime: 0 ms
class Solution { public: void fillresult(TreeNode* root, vector<int> &result){ if(root == NULL) return; result.push_back(root->val); fillresult(root->left, result); fillresult(root->right, result); } vector<int> preorderTraversal(TreeNode* root) { if(root == NULL) return vector<int>(); vector<int> result; fillresult(root, result); return result; } };
方法二:迭代
1.stack存入root,作为开头2.stack不为空,循环3、4
3.top取一个点ptop,存入vector
4.pop掉ptop,stack存入非空的ptop->right,stack存入非空的ptop->left
5.return vector
Status: Accepted
Runtime: 0 ms
class Solution { public: vector<int> preorderTraversal(TreeNode* root) { vector<int> result; if(root == NULL) return result; stack<TreeNode*> stk; TreeNode* pNode = NULL; stk.push(root); while(!stk.empty()){ pNode = stk.top(); result.push_back(pNode->val); stk.pop(); if(pNode->right){ stk.push(pNode->right); } if(pNode->left) stk.push(pNode->left); } return result; } };
相关文章推荐
- AVL树-自平衡二叉查找树(Java实现)
- C#中的递归APS和CPS模式详解
- WinForm实现按名称递归查找控件的方法
- C#中的尾递归与Continuation详解
- C语言二叉树的非递归遍历实例分析
- 使用C语言构建基本的二叉树数据结构
- C#递归实现显示文件夹及所有文件并计算其大小的方法
- C++非递归队列实现二叉树的广度优先遍历
- php递归创建目录的方法
- C#使用前序遍历、中序遍历和后序遍历打印二叉树的方法
- 浅谈javascript 迭代方法
- Javascript递归打印Document层次关系实例分析
- oracle 使用递归的性能提示测试对比
- 使用curl递归下载软件脚本分享
- Perl脚本实现递归遍历目录下的文件
- JavaScript的递归之递归与循环示例介绍
- C# 递归查找树状目录实现方法
- 全排列算法的非递归实现与递归实现的方法(C++)
- php递归列出所有文件和目录的代码
- java递归菜单树转换成pojo对象