[LeetCode] Binary Tree Preorder Traversal, Solution
2013-11-26 13:42
337 查看
Given a binary tree, return the preorder traversal of its nodes' values.
For example:
Given binary tree
return
Note: Recursive solution is trivial, could you do it iteratively?
[Thoughts]
PreOrder:
1. visit node
2. visit node->left
3. visit node->right
对于递归的解法很清晰,
function preorder(root)
if root == NULL return;
print root;
preoder(node->left);
preOrder(node->right);
将该递归函数转换成非递归的话,一般都要借助于栈。
[code]1: vector<int> preorderTraversal(TreeNode *root) { 2: stack<TreeNode*> tStack; 3: vector<int> result; 4: while(tStack.size()>0 || root != NULL) 5: { 6: if(root != NULL) 7: { 8: result.push_back(root->val); 9: if(root->right !=NULL) 10: tStack.push(root->right); 11: root = root->left; 12: } 13: else 14: { 15: root = tStack.top(); 16: tStack.pop(); 17: } 18: } 19: return result; 20: }
Update 08/20/2014. Another way to use stack
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?
[Thoughts]
PreOrder:
1. visit node
2. visit node->left
3. visit node->right
对于递归的解法很清晰,
function preorder(root)
if root == NULL return;
print root;
preoder(node->left);
preOrder(node->right);
将该递归函数转换成非递归的话,一般都要借助于栈。
[code]1: vector<int> preorderTraversal(TreeNode *root) { 2: stack<TreeNode*> tStack; 3: vector<int> result; 4: while(tStack.size()>0 || root != NULL) 5: { 6: if(root != NULL) 7: { 8: result.push_back(root->val); 9: if(root->right !=NULL) 10: tStack.push(root->right); 11: root = root->left; 12: } 13: else 14: { 15: root = tStack.top(); 16: tStack.pop(); 17: } 18: } 19: return result; 20: }
Update 08/20/2014. Another way to use stack
1: vector<int> preorderTraversal(TreeNode *root) { 2: stack<TreeNode*> stack; 3: vector<int> result; 4: TreeNode* cur = root; 5: while(cur != NULL || stack.size() != 0) 6: { 7: while(cur != NULL) 8: { 9: result.push_back(cur->val); 10: stack.push(cur); 11: cur = cur->left; 12: } 13: cur = stack.top(); 14: stack.pop(); 15: cur = cur->right; 16: } 17: return result; 18: }
相关文章推荐
- [LeetCode] Construct Binary Tree from Preorder and Inorder Traversal, Solution
- [LeetCode] Construct Binary Tree from Preorder and Inorder Traversal, Solution
- [LeetCode] Binary Tree Preorder Traversal, Solution
- 【LeetCode】-Binary Tree Preorder Traversal
- Binary Tree Preorder Traversal @leetcode
- [LeetCode]Binary Tree Preorder Traversal
- LeetCode 105. Construct Binary Tree from Preorder and Inorder Traversal
- Leetcode 105. Construct Binary Tree from Preorder and Ignorer Traversal(C++版)
- [Leetcode] Binary Tree Preorder Traversal
- [Leetcode] Construct Binary Tree from Preorder and Inorder Traversal
- LeetCode(105) Construct Binary Tree from Preorder and Inorder Traversal
- LeetCode(144) Binary Tree Preorder Traversal
- Leetcode #144 Binary Tree Preorder Traversal
- leetcode - Binary Tree Preorder Traversal
- LeetCode --- Construct Binary Tree from Preorder and Inorder Traversal
- leetcode--Binary Tree Preorder Traversal
- leetcode Binary Tree Preorder Traversal
- LeetCode:Binary Tree Preorder Traversal(非递归方法前序遍历二叉树)
- leetcode - Binary Tree Preorder Traversal && Binary Tree Inorder Traversal && Binary Tree Postorder Traversal
- leetcode之Construct Binary Tree from Preorder and Inorder Traversal