[leetcode 144]Binary Tree Preorder Traversal
来源:互联网 发布:pdf加密软件 编辑:程序博客网 时间:2024/06/06 14:02
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),时间复杂度为O(n)
/** * 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> res; vector<int> preorderTraversal(TreeNode *root) { if (!root) { return res; } res.push_back(root->val); preorderTraversal(root->left); preorderTraversal(root->right); return res; }};
栈 空间复杂度为O(n),时间复杂度为O(n)
/** * 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> preorderTraversal(TreeNode *root) { vector<int> res; if (!root) { return res; } stack<TreeNode *> p; p.push(root); while (!p.empty()) { auto tmp = p.top(); p.pop(); res.push_back(tmp->val); if (tmp->right) { p.push(tmp->right); } if (tmp->left) { p.push(tmp->left); } } return res; }};
Morris二叉树遍历(参考http://www.it165.net/pro/html/201403/10857.html) 空间复杂度为O(1),时间复杂度为O(n)
/** * 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> preorderTraversal(TreeNode *root) { vector<int> res; TreeNode *cur = root; while (cur) { if (cur->left == NULL) { res.push_back(cur->val); cur = cur->right; } else { TreeNode *node = cur->left; while (node->right && node->right != cur) { node = node->right; } if (node->right == NULL) { res.push_back(cur->val); node->right = cur; cur = cur->left; } else { node->right = NULL; cur = cur->right; } } } return res; }};
0 0
- LeetCode(144)Binary Tree Preorder Traversal
- LeetCode: Binary Tree Preorder Traversal [144]
- [leetcode 144]Binary Tree Preorder Traversal
- leetcode || 144、Binary Tree Preorder Traversal
- Binary Tree Preorder Traversal - LeetCode 144
- 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
- Binary Tree Preorder Traversal (leetcode 144)
- leetcode[144]:Binary Tree Preorder Traversal
- [Leetcode 144, Medium] Binary Tree Preorder Traversal
- LeetCode(144) Binary Tree Preorder Traversal
- 【LeetCode】(144)Binary Tree Preorder Traversal(Easy)
- Leetcode #144 Binary Tree Preorder Traversal
- leetcode: (144) Binary Tree Preorder Traversal
- leetCode #144 Binary Tree Preorder Traversal
- hadoop join问题1
- android图片特效之取主色
- postgresql数据类型
- sun.misc.BASE64Encoder找不到jar包的解决方法
- mvn deploy 报出400错误
- [leetcode 144]Binary Tree Preorder Traversal
- [LeetCode]Linked List Cycle II
- 下雨积水问题
- Monkey基础
- 学《云计算应用开发实践》总结<一>
- Preferece(2)
- ios应用之间跳转
- MatConvNet在Ubuntu14.04上的配置笔记
- 单台solr安装与使用