分层遍历二叉树的集中情况
- 从上而下的打印
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.
时间: 2024-12-11 22:05:44