分层遍历二叉树的集中情况
从上而下的打印
vector<vector<int>> printLevel(TreeNode *root)
{
vector<vector<int>> ret;
if(root == NULL) return ret;
queue<TreeNode *> q;
int size;
q.push_back(root);
while(!q.empty())
{
size = q.size(); //当前层次的个数
vecotr<int> tmp;
while(size --) //纪录当前层次
{
TreeNode *t = q.top();
q.pop();
tmp.push_back(t->val);
if(t->left) q.push_back(t->left);
if(t->right) q.push_back(t->right);
}
ret.push_back(tmp);
}
return ret;
}
2.
也可以使用两个vector 交换赋值;
2. 打印某一层的的全部节点
void printLevel(TreeNode *root, int level)
{
if(root == NULL || level < 0) return;
if(level ==0) {
print root->val;
returrn;
}
printLevel(root->left, level--); //这两个交换可以改变打印顺序
printlevel(root->right,level--);
}
3. 从下而上的打印每一层节点
//根据算法1, 改成递归
4. 从下而上,自右而左的打印每一层节点
在3递归的基础上,把没层的节点reverse.