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,#,#,15,7},
3
/ \
9 20
/ \
15 7
return its level order traversal as:
[
[3],
[9,20],
[15,7]
]
难度系数:
容易
实现
vector<TreeNode*> getLevelNode(vector<TreeNode*> &nodes)
{
vector<TreeNode*> vtn;
for (int i = 0; i < nodes.size(); ++i) {
if (nodes[i]->left) {
vtn.push_back(nodes[i]->left);
}
if (nodes[i]->right) {
vtn.push_back(nodes[i]->right);
}
}
return vtn;
}
vector<vector<int> > levelOrder(TreeNode *root) {
vector<vector<int> > vvi;
if (root == NULL)
return vvi;
vector<TreeNode*> nds;
nds.push_back(root);
do {
vector<int> vi;
for (int i = 0; i < nds.size(); ++i) {
vi.push_back(nds[i]->val);
}
vvi.push_back(vi);
nds = getLevelNode(nds);
} while (nds.size() != 0);
return vvi;
}