[leetcode][tree] Binary Tree Preorder Traversal
2015-05-22 18:19
363 查看
题目:
Given a binary tree, return the preorder traversal of its nodes' values.
For example:
Given binary tree
return
递归实现:
非递归实现:
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].
递归实现:
/** * 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> res; preorderTraversalCore(root, res); return res; } private: void preorderTraversalCore(TreeNode *root, vector<int> &res){ if(NULL == root) return; res.push_back(root->val); preorderTraversalCore(root->left, res); preorderTraversalCore(root->right, res); } };
非递归实现:
/** * 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> res; if (NULL == root) return res; stack<TreeNode *> sta; TreeNode *p = root; while (p || !sta.empty()){ while (p){//一直向左 res.push_back(p->val);//访问节点 sta.push(p);//节点入栈 p = p->left;//继续向左 } p = sta.top(); sta.pop();//弹出栈顶节点 p = p->right;//更新p为栈顶节点的右孩子,开始下一轮循环 } return res; } };
相关文章推荐
- LeetCode(144)Binary Tree Preorder Traversal
- LeetCode--Binary Tree Preorder Traversal
- leetcode——105——Construct Binary Tree from Preorder and Inorder Traversal
- LeetCode_Construct Binary Tree from Preorder and Inorder Traversal
- [leetcode-105]Construct Binary Tree from Preorder and Inorder Traversal(java)
- LeetCode 106:Construct Binary Tree from Preorder and Inorder Traversal
- leetcode: Binary Tree Preorder Traversal
- LeetCode Construct Binary Tree from Preorder and Inorder Traversal
- Java for LeetCode 105 Construct Binary Tree from Preorder and Inorder Traversal
- 【leetcode】Construct Binary Tree from Preorder and Inorder Traversal
- LeetCode 105 Construct Binary Tree from Preorder and Inorder Traversal
- 【LeetCode】Binary Tree Preorder Traversal
- [leetcode]Construct Binary Tree from Preorder and Inorder Traversal(根据前序、中序遍历确定一棵二叉树 C语言)
- [LeetCode]Binary Tree Preorder Traversal
- LeetCode--Binary Tree Preorder Traversal
- Leetcode dfs Construct Binary Tree from Preorder and Inorder Traversal
- [LeetCode#144]Binary Tree Preorder Traversal
- Leetcode: Binary Tree Preorder Traversal
- [LeetCode]Binary Tree Preorder Traversal
- LeetCode 105. Construct Binary Tree from Preorder and Inorder Traversal