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<vector<int> > levelOrder(TreeNode *root) {
if(root == NULL) return vector<vector<int> >();
vector<vector<int> > res;
vector<int> res_one;
vector<TreeNode *> parent,chlid;//一个存放父节点,一个存放子节点
parent.push_back(root);
while(parent.size() > 0)
{
for(int i = 0;i < parent.size();i++)
{
res_one.push_back(parent[i]->val);
if(parent[i]->left)
{
chlid.push_back(parent[i]->left);
}
if(parent[i]->right)
{
chlid.push_back(parent[i]->right);
}
}
res.push_back(res_one);
parent = chlid;//容器可以直接赋值。
chlid.clear();
res_one.clear();//清除结果,进行下一次
}
return res;
}