[LeetCode]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
/
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}".
思考:递归
class Solution {
public:
void DFS(TreeNode *root,vector<int> &ans)
{
if(root)
{
DFS(root->left,ans);
ans.push_back(root->val);
DFS(root->right,ans);
}
}
vector<int> inorderTraversal(TreeNode *root) {
vector<int> ans;
ans.clear();
DFS(root,ans);
return ans;
}
};
非递归
class Solution {
public:
vector<int> inorderTraversal(TreeNode *root) {
vector<int> ans;
stack<TreeNode *> s;
TreeNode *p=root;
while(!s.empty()||p)
{
if(p)
{
s.push(p);
p=p->left;
}
else
{
p=s.top();
s.pop();
ans.push_back(p->val);
p=p->right;
}
}
return ans;
}
};

浙公网安备 33010602011771号