Binary Tree Inorder Traversal (leetcode)
2014-11-03 15:35
603 查看
题目:
Given a binary tree, return the inorder traversal of its nodes' values.
For example:
Given binary tree
return
Note: Recursive solution is trivial, could you do it iteratively?
confused what
read more on how binary tree is serialized on OJ.
OJ's Binary Tree Serialization:
The serialization of a binary tree follows a level order traversal, where '#' signifies a path terminator where no node exists below.
Here's an example:
The above binary tree is serialized as
二叉树的中序遍历,其中inorder函数是递归版本的遍历,而inorderIterat是迭代版的中序遍历。
Given a binary tree, return the inorder traversal of its nodes' values.
For example:
Given binary tree
{1,#,2,3},
1 \ 2 / 3
return
[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.
OJ's Binary Tree Serialization:
The serialization of a binary tree follows a level order traversal, where '#' signifies a path terminator where no node exists below.
Here's an example:
1 / \ 2 3 / 4 \ 5
The above binary tree is serialized as
"{1,2,3,#,#,4,#,#,5}". https://oj.leetcode.com/problems/binary-tree-inorder-traversal/ href="https://oj.leetcode.com/problems/binary-tree-inorder-traversal/" target=_blank>点击打开链接
二叉树的中序遍历,其中inorder函数是递归版本的遍历,而inorderIterat是迭代版的中序遍历。
#include<iostream> #include<vector> #include<stack> using namespace std; struct TreeNode { int val; TreeNode *left; TreeNode *right; TreeNode(int x) : val(x), left(NULL), right(NULL) {} }; void inorder(TreeNode *root,vector<int> &result) { if(root==NULL) return ; inorder(root->left,result); result.push_back(root->val); inorder(root->right,result); } void inorderIterat(TreeNode *root,vector<int> &result) { stack<TreeNode*> s; s.push(root); TreeNode* temp=s.top(); while(temp->left!=NULL) { temp=temp->left; s.push(temp); } while(!s.empty()) { temp=s.top(); result.push_back(temp->val); s.pop(); if(temp->right!=NULL) { s.push(temp->right); temp=s.top(); while(temp->left!=NULL) { temp=temp->left; s.push(temp); } } } } vector<int> inorderTraversal(TreeNode *root) { vector<int> result; if(root==NULL) return result; // inorder(root,result);//递归版本 inorderIterat(root,result);//迭代版本 return result; } int main() { TreeNode *root=new TreeNode(1); root->left=new TreeNode(2); root->right=new TreeNode(3); vector<int> result=inorderTraversal(root); for(int i=0;i<result.size();i++) cout<<result[i]<<" "; cout<<endl; system("pause"); return 0; }
相关文章推荐
- LeetCode Online Judge 题目C# 练习 - Binary Tree Inorder Traversal
- 【LeetCode with Python】 Binary Tree Inorder Traversal
- Leetcode: Construct Binary Tree from Preorder and Inorder Traversal
- LeetCode: Binary Tree Inorder Traversal
- [Leetcode] Construct Binary Tree from Preorder and Inorder Traversal
- LeetCode Construct Binary Tree from Preorder and 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 63: Binary Tree Inorder Traversal
- [leetcode]Construct Binary Tree from Preorder and Inorder Traversal
- LeetCode Construct Binary Tree from Inorder and Postorder Traversal
- LeetCode : Binary Tree Inorder 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] Construct Binary Tree from Inorder and Postorder Traversal
- [LeetCode] Construct Binary Tree from Preorder and Inorder Traversal, Solution
- LeetCode Binary Tree Inorder Traversal