首页
找靠谱产品
找解决方案
找靠谱公司
找案例
找对的人
专家智库
悬赏任务
SAAS
ToB门户
了解全球最新的ToB事件
论坛
潜水/灌水快乐,沉淀知识,认识更多同行。
ToB圈子
加入IT圈,遇到更多同好之人。
微博
Follow
记录
Doing
博客
Blog
文库
业界最专业的IT文库,上传资料也可以赚钱
下载
分享
Share
排行榜
Ranklist
相册
Album
应用中心
qidao123.com ToB IT社区-企服评测·应用市场
»
论坛
›
虚拟化.超融合.云计算
›
公有云
›
SAAS
›
剑指offer-22、从上往下打印⼆叉树
返回列表
发新帖
剑指offer-22、从上往下打印⼆叉树
[复制链接]
发表于 2025-8-19 07:13:20
|
显示全部楼层
|
阅读模式
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要
登录
才可以下载或查看,没有账号?
立即注册
×
题⽬描述
从上往下打印出⼆叉树的每个节点,同层节点从左⾄右打印。
思路及解答
这个实在就是标准的迭代遍历了
利用队列(Queue)数据结构实现层次遍历:
将根节点入队
循环实行以下操作直到队列为空:
出队一个节点并访问
将该节点的左子节点入队(如果存在)
将该节点的右子节点入队(如果存在)
/**
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个节点
回复
使用道具
举报
返回列表
浏览过的版块
人工智能
云原生
物联网
Oracle
IT职场那些事
Java
数据仓库与分析
.Net
运维.售后
分布式数据库
王海鱼
+ 我要发帖
登录后关闭弹窗
登录参与点评抽奖 加入IT实名职场社区
去登录
微信订阅号
微信服务号
微信客服(加群)
H5
小程序
快速回复
返回顶部
返回列表