二叉树层级遍历框架
//输入一颗二叉树的根节点,层序遍历这颗二叉树
void levelTraverse(TreeNode root){
if(root == null) return 0;
Queue<TreeNode> q = new LinkedList<>();
q.offer(root);
int depth = 1;
//从上到下遍历二叉树的每一层、
while(!q.isEmpty()){
int sz = q.size();
//从左到右遍历每一层的每个节点
for(int i = 0;i < sz;i++){
TreeNode cur = q.poll();
printf("节点 %s 在第 %s 层",cur,depth);
}
//将下一层节点放入队列
if(cur.left != null){
q.offer(cur.left);
}
if(cur.right != null){
q.offer(cur.right);
}
}
depth++;
}
注意:
while循环控制层数,depth变量记录了当前遍历到的层数。
for循环控制每层的节点数
多叉树层级遍历框架:
//输入一棵多叉树的根节点,层序遍历这棵多叉树
void levelTraverse(TreeNode root){
if(