剑指offer-22、从上往下打印⼆叉树

题⽬描述

从上往下打印出⼆叉树的每个节点,同层节点从左⾄右打印。

思路及解答

这个其实就是标准的迭代遍历了

使用队列(Queue)数据结构实现层次遍历:

  1. 将根节点入队
  2. 循环执行以下操作直到队列为空:
    • 出队一个节点并访问
    • 将该节点的左子节点入队(如果存在)
    • 将该节点的右子节点入队(如果存在)
java 复制代码
/**
public class TreeNode {
    int val = 0;
    TreeNode left = null;
    TreeNode right = null;
    public TreeNode(int val) {
    this.val = val;
	}
}
*/
public ArrayList<Integer> PrintFromTopToBottom(TreeNode root) {
        ArrayList<Integer> result = new ArrayList<>();
        if (root == null) {
            return result; // 空树直接返回空列表
        }
        
        Queue<TreeNode> queue = new LinkedList<>();
        queue.offer(root); // 根节点入队
        
        while (!queue.isEmpty()) {
            TreeNode current = queue.poll(); // 出队当前节点
            result.add(current.val); // 访问节点值
            
            // 左子节点入队
            if (current.left != null) {
                queue.offer(current.left);
            }
            // 右子节点入队
            if (current.right != null) {
                queue.offer(current.right);
            }
        }
        
        return result;
    }
}
  • 时间复杂度:O(n),每个节点被访问一次
  • 空间复杂度:O(n),队列最多存储n个节点
相关推荐
维天说1 小时前
CLI-Switch 2026年3月版历史设计:Hook、TTY 隔离与 JSON 状态
java·服务器·json
Zane19942 小时前
并发 vs 并行:别再傻傻分不清了,一文讲透 Java 并发编程的第一课
java·后端
噢,我明白了3 小时前
java中Excel的导入和导出(EasyExcel)
java·开发语言·excel
吠品3 小时前
Zabbix Web界面误报Server未运行的排查与解决
java·服务器·数据库
啊湘3 小时前
天气查询API接口 按月Token鉴权 实时天气 物联网可用 文档齐全
java·后端·struts
Java内核笔记3 小时前
告别十亿美元的错误 : Spring Boot 4 空安全 (JSpecify) 实战
java·spring boot·后端
糖果店的幽灵3 小时前
langgraph的 MessagesState 解读
java·开发语言·人工智能·windows·langgraph
极光代码工作室4 小时前
基于SpringBoot的在线博客系统
java·springboot·web开发·后端开发
我是唐青枫5 小时前
Java Spring Security 实战详解:从登录认证到 JWT 权限控制
java·spring
ihuyigui5 小时前
海外签收通知短信接口
android·java·开发语言·前端·数据库·后端