Binary Tree Preorder Traversal leetcode144
2015-05-10 21:41
405 查看
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?
先贴出递归的解法,但提交时会出现runtime error
不用递归用迭代的话,就必须要借助栈来保存访问过的节点,以便访问其右孩子。
Binary Tree Preorder Traversal
Submission Details
67 / 67 test cases passed.
Status: Accepted
Runtime: 3 ms
Submitted: 45 minutes ago
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?
先贴出递归的解法,但提交时会出现runtime error
/** * 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) { vector<int> result; if(root!=NULL)result.push_back(root->val); if(root->left!=NULL)preorderTraversal(root->left); if(root->right!=NULL)preorderTraversal(root->right); return result; } };
不用递归用迭代的话,就必须要借助栈来保存访问过的节点,以便访问其右孩子。
/** * 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) { vector<int> result; stack<TreeNode *> s; TreeNode* p; while(p!=NULL||!s.empty()){ while(p!=NULL){ result.push_back(p->val); s.push(p);//将访问过的节点压栈,以便后面访问其右孩子 p=p->left;//访问其左孩子 } if(!s.empty()){//此时p节点为NULL,若栈不为空的话,则把p指向先前访问过的节点,访问该节点的右孩子 p=s.top(); s.pop(); p=p->right; } } return result; } };
Binary Tree Preorder Traversal
Submission Details
67 / 67 test cases passed.
Status: Accepted
Runtime: 3 ms
Submitted: 45 minutes ago
相关文章推荐
- LeetCode 144:Binary Tree Preorder Traversal
- leetcode_c++:栈:Binary Tree Preorder Traversal(144)
- LeetCode:144_Binary Tree Preorder Traversal | 二叉树的前序遍历 | Medium
- 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(二叉树,递归,栈的使用)
- [LeetCode 144] Binary Tree Preorder Traversal
- LeetCode144:Binary Tree Preorder Traversal
- LeetCode 144 -Binary Tree Preorder Traversal ( JAVA )
- Leetcode_144_Binary Tree Preorder Traversal
- LeetCode 144 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
- [LeetCode#144]Binary Tree Preorder Traversal
- 【LeetCode】144 . Binary Tree Preorder Traversal 解题报告