【leetcode】Binary Tree Inorder Traversal
2013-05-03 22:36
176 查看
Question :
Given a binary tree, return the inorder traversal of its nodes' values.For example:
Given binary tree
Anwser 1 :
Anwser 2 :
Anwser 3 :
参考推荐:
Binary Tree Inorder Traversal
Given a binary tree, return the inorder traversal of its nodes' values.For example:
Given binary tree
{1,#,2,3},
1 \ 2 / 3return
[1,3,2].Note: Recursive solution is trivial, could you do it iteratively?confused what
"{1,#,2,3}"means? > read more on how binary tree is serialized on OJ.
Anwser 1 :
/** * 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> inorderTraversal(TreeNode *root) { // Start typing your C/C++ solution below // DO NOT write int main() function vector<int> result(0); if (root == NULL) return result; stack<TreeNode *> S; TreeNode* p = root; do { if (p != NULL) { S.push(p); p = p->left; } else { p = S.top(); S.pop(); result.push_back(p->val); p = p->right; } }while(!S.empty() || p != NULL); return result; } };
Anwser 2 :
/** * Definition for binary tree * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */ class Solution { public: void dfs(TreeNode *p, vector<int> &result) { if(p->left != NULL) dfs(p->left, result); result.push_back(p->val); if(p->right!=NULL) dfs(p->right, result); } vector<int> inorderTraversal(TreeNode *root) { // Start typing your C/C++ solution below // DO NOT write int main() function TreeNode * head = root; vector<int> result; result.clear(); if(head!=NULL) { dfs(head, result); } return result; } };
Anwser 3 :
/** * 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> inorderTraversal(TreeNode *root) { // Start typing your C/C++ solution below // DO NOT write int main() function vector<int> result; result.clear(); stack<TreeNode *> stack_in; stack<TreeNode *> stack_out; if(root == NULL) return result; stack_in.push(root); while(!stack_in.empty()) { TreeNode *node_in = stack_in.top(); stack_in.pop(); stack_out.push(node_in); if(node_in->right!=NULL && node_in->left!=NULL) { stack_in.push(node_in->right); stack_in.push(node_in->left); } else if(node_in->left!=NULL && node_in->right==NULL) { stack_in.push(node_in->left); } else if(node_in->left==NULL && node_in->right!=NULL) { stack_in.push(node_in->right); result.push_back(node_in->val); stack_out.pop(); } else { result.push_back(node_in->val); stack_out.pop(); while(!stack_out.empty()) { TreeNode * tmp = stack_out.top(); stack_out.pop(); result.push_back(tmp->val); if(tmp->right!=NULL) break; } } } return result; } };
参考推荐:
Binary Tree Inorder Traversal
相关文章推荐
- Leetcode: Construct Binary Tree from Inorder and Postorder Traversal
- LeetCode 94:Binary Tree Inorder Traversal
- Leetcode: Construct Binary Tree from Inorder and Postorder Traversal
- LeetCode 105. Construct Binary Tree from Preorder and Inorder Traversal 题解
- leetcode--Binary Tree Inorder Traversal
- [LeetCode] Binary Tree Inorder Traversal
- [Leetcode] 106. Construct Binary Tree from Inorder and Postorder Traversal
- leetcode~Binary Tree Inorder Traversal
- [Leetcode] Construct Binary Tree from Inorder and Postorder Traversal
- LeetCode: Construct Binary Tree from Inorder and Postorder Traversal
- leetcode--Construct Binary Tree from Preorder and Inorder Traversal
- leetcode之Construct Binary Tree from Preorder and Inorder Traversal
- [LeetCode] Binary Tree Inorder Traversal
- LeetCode-Binary Tree Inorder Traversal
- Leetcode dfs Construct Binary Tree from Preorder and Inorder Traversal
- Leetcode_94_Binary Tree Inorder Traversal
- LeetCode 94 Binary Tree Inorder Traversal(二叉树的中序遍历)+(二叉树、迭代)
- LeetCode 105. Construct Binary Tree from Preorder and Inorder Traversal
- 【LeetCode】105. Construct Binary Tree from Preorder and Inorder Traversal
- leetcode -- Binary Tree Inorder Traversal