binTreepreorderTraversal二叉树的先序遍历
来源:互联网 发布:linux 重启apache命令 编辑:程序博客网 时间:2024/05/21 14:02
原题:
Given a binary tree, return the preorder traversal of its nodes’ values.
For example:Given binary tree {1,#,2,3}, 1 \ 2 / 3return [1,2,3].
分析:
对二叉树进行先序遍历,即根节点->左子树->右子树
代码:
递归:
递归代码十分简单,建立一个vector作为返回的结果,现将根节点push进去,然后递归处理左子树和右子树.
class Solution{public: std::vector<int> v; vector<int> preorderTraversal(TreeNode *root){ if(root){ v.push_back(root->val); preorderTraversal(root->left); preorderTraversal(root->right); } return v; }};
栈
可以建立一个栈,每次把根节点push进栈,然后root=root->left;直到root
为空时,再从栈里获取top()->right,然后重复上面的动作
class Solution {public: vector<int> preorderTraversal(TreeNode* root) { vector<int> res; if(root == NULL) return res; stack<TreeNode*> st; TreeNode* node = root; while(node || !st.empty()){ if(node){ //遍历根节点和左子树并入栈 res.push_back(node->val); st.push(node); node = node->left; }//直到结点为空,换成上一个结点的右子树,再按照上面的顺序遍历 else{ node = st.top()->right; st.pop(); } } return res; }};
阅读全文
0 0
- binTreepreorderTraversal二叉树的先序遍历
- 二叉树的先序遍历
- 二叉树的先序遍历
- 求二叉树的先序遍历
- 求二叉树的先序遍历
- 求二叉树的先序遍历
- 求二叉树的先序遍历
- 求二叉树的先序遍历
- 求二叉树的先序遍历
- C++二叉树的先序遍历
- 求二叉树的先序遍历
- 求二叉树的先序遍历
- 二叉树的先序遍历
- 求二叉树的先序遍历
- 求二叉树的先序遍历
- 求二叉树的先序遍历
- 求二叉树的先序遍历
- 求二叉树的先序遍历
- 如何将RxSwift引入项目中
- eclipse 右键添加maven依赖时搜索不出依赖包
- python爬虫之XPath与lxml的使用
- 前端技术演进史
- 《零基础入门学习Python》学习过程笔记【016列表,元组,字符串的转化及共用技巧】
- binTreepreorderTraversal二叉树的先序遍历
- TCP三次握手与四次挥手
- 学编程从理解编程概念开始
- Leetcode 464. Can I Win
- 选择排序
- 一些java基础错题总结
- day04错误处理、环境表、内存管理技术
- 解决myeclise对js的报错问题
- 剑指offer算法题之单链表的删除结点操作--面试题13:在O(1)时间删除链表结点