Binary Tree Level Order Traversal(leetcode)
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 [3,9,20,null,null,15,7]
,
3
/ \
9 20
/ \
15 7
return its level order traversal as:
[
[3],
[9,20],
[15,7]
]
解题思路:
使用前序遍历,并维护一个int变量,表示层数。由于一棵树的左子树总是比右子树先被访问到,所以每次push_back就可以了。
代码:
class Solution {
public:
vector<vector<int>> levelOrder(TreeNode* root) {
vector<vector<int>> result;
help(result, root, 0);
return result;
}
void help(vector<vector<int>>& result, TreeNode* root, int index) {
if (!root) return;
if (result.size() == index) {
result.push_back(vector<int>());
}
result[index].push_back(root->val);
help(result, root->left, index+1);
help(result, root->right, index+1);
}
};