Given a binary tree, return the level order traversal of its nodes' values. (ie, from left to right, level by level).
For example:
Given binary tree
Given binary tree
{3,9,20,#,#,15,7}
, 3
/ \
9 20
/ \
15 7
return its level order traversal as:
[
[3],
[9,20],
[15,7]
]
Solution:
void helper(TreeNode *root, int level, vector<vector<int> >& result)
{
if(!root)
return;
if(result.size()==level)
{
vector<int> tmp;
tmp.push_back(root->val);
result.push_back(tmp);
}
else
result[level].push_back(root->val);
if(root->left)
helper(root->left, level+1, result);
if(root->right)
helper(root->right, level+1, result);
}
vector<vector<int> > levelOrder(TreeNode *root) {
vector<vector<int> > result;
if(!root)
return result;
helper(root, 0, result);
return result;
}
No comments:
Post a Comment