[Leetcode] 144. Binary Tree Preorder Traversal 解题报告
来源:互联网 发布:php 5.4.10.tar.gz 编辑:程序博客网 时间:2024/06/05 17:20
题目:
Given a binary tree, return the preorder traversal of its nodes' values.
For example:
Given binary tree {1,#,2,3}
,
1 \ 2 / 3
return [1,2,3]
.
Note: Recursive solution is trivial, could you do it iteratively?
思路:
我的经验是:对树这种数据结构,递归是神器;而如果题目不允许采用递归,那么一般需要使用栈或者队列等数据结构进行辅助。本题就需要借助栈进行先序遍历。我们维护一个栈,每次遇到栈顶元素,就输出;然后依次将其不为空的右子树和左子树压入栈中。这样处理直到栈为空。其时间复杂度为O(n),其中n是树的节点个数;空间复杂度则取决于树是否平衡,如果树是平衡的,那么空间复杂度为O(logn),否则空间复杂度最高可达O(n)。
代码:
/** * Definition for a binary tree node. * 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) { if (root == NULL) { return {}; } vector<int> ret; stack<TreeNode*> st; st.push(root); while (!st.empty()) { TreeNode *node = st.top(); st.pop(); ret.push_back(node->val); if (node->right) { st.push(node->right); } if (node->left) { st.push(node->left); } } return ret; }};
0 0
- LeetCode 解题报告 Binary Tree Preorder Traversal
- 【LeetCode】Binary Tree Preorder Traversal 解题报告
- [leetcode] 144. Binary Tree Preorder Traversal 解题报告
- LeetCode 144. Binary Tree Preorder Traversal 解题报告
- LeetCode 144. Binary Tree Preorder Traversal 解题报告
- [Leetcode] 144. Binary Tree Preorder Traversal 解题报告
- [leetcode]144. Binary Tree Preorder Traversal@Java解题报告
- LeetCode—Binary Tree Preorder Traversal 解题报告
- [LeetCode OJ] Binary Tree Preorder Traversal 解题报告
- LeetCode(144) Binary Tree Preorder Traversal解题报告
- 【LeetCode】144 . Binary Tree Preorder Traversal 解题报告
- 【LeetCode】Construct Binary Tree from Preorder and Inorder Traversal 解题报告
- LeetCode(105) Construct Binary Tree from Preorder and Inorder Traversal解题报告
- [leetcode] 105. Construct Binary Tree from Preorder and Inorder Traversal 解题报告
- 【LeetCode】105. Construct Binary Tree from Preorder and Inorder Traversal 解题报告
- [Leetcode] 105. Construct Binary Tree from Preorder and Inorder Traversal 解题报告
- [leetcode]105. Construct Binary Tree from Preorder and Inorder Traversal@Java解题报告
- Construct Binary Tree from Preorder and Inorder Traversal 解题报告
- [CEOI2008] BZOJ 1391 order-最小割
- Gravity and layout gravity
- 正则表达式(Regular Expression)
- Carte+kettle+mysql性能问题定位分析记录
- linux下vi命令大全
- [Leetcode] 144. Binary Tree Preorder Traversal 解题报告
- 致产品经理: 持续集成、持续交付、持续部署和DevOps
- Android Studio之BuildConfig类
- Number Complement
- 搜索--16
- VIM使用技巧记录
- [leetcode: Python] 118.Pascal's Triangle
- listctrl第一列加图标的问题
- Unity 对象池(Object Pooling)理解与简单应用