剑指offer-22、从上往下打印⼆叉树
题⽬描述
从上往下打印出⼆叉树的每个节点,同层节点从左⾄右打印。

思路及解答
这个其实就是标准的迭代遍历了
使用队列(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个节点
剑指offer-22、从上往下打印⼆叉树的更多相关文章
- 剑指Offer 22. 从上往下打印二叉树 (二叉树)
题目描述 从上往下打印出二叉树的每个节点,同层节点从左至右打印. 题目地址 https://www.nowcoder.com/practice/7fe2212963db4790b57431d9ed25 ...
- [剑指Offer] 22.从上往下打印二叉树
[思路]广度优先遍历,队列实现 class Solution { public: vector<int> PrintFromTopToBottom(TreeNode* root) { qu ...
- 《剑指offer》从上往下打印二叉树
本题来自<剑指offer> 从上往下打印二叉树 题目: 从上往下打印出二叉树的每个节点,同层节点从左至右打印. 思路: 队列的思想. 先将根节点加入,当取该节点时候,依次将左右子树加入,直 ...
- 【剑指Offer】从上往下打印二叉树 解题报告(Python)
[剑指Offer]从上往下打印二叉树 解题报告(Python) 标签(空格分隔): 剑指Offer 题目地址:https://www.nowcoder.com/ta/coding-interviews ...
- 【剑指offer】从上向下打印二叉树
转载请注明出处:http://blog.csdn.net/ns_code/article/details/26089165 剑指offer上的第23题,实际上就是考察二叉树的层序遍历,详细思想能够參考 ...
- 【Java】 剑指offer(32) 从上往下打印二叉树
本文参考自<剑指offer>一书,代码采用Java语言. 更多:<剑指Offer>Java实现合集 题目 (一)从上往下打印出二叉树的每个结点,同一层的结点按照从左到右的顺 ...
- Go语言实现:【剑指offer】从上往下打印二叉树
该题目来源于牛客网<剑指offer>专题. 从上往下打印出二叉树的每个节点,同层节点从左至右打印. 不需分层,一维数组. Go语言实现: /** * Definition for a bi ...
- 剑指offer系列20--从上到下打印二叉树
* 20 [题目]从上往下打印出二叉树的每个节点,同层节点从左至右打印. * [思路]从根结点开始,先保存结点,再看根结点的左右结点有没有值. * 有,就将左右值放到集合中: * 根节点输出后,打印根 ...
- 剑指OFFER之从上往下打印二叉树(九度OJ1523)
题目描述: 从上往下打印出二叉树的每个节点,同层节点从左至右打印. 输入: 输入可能包含多个测试样例,输入以EOF结束.对于每个测试案例,输入的第一行一个整数n(1<=n<=1000, : ...
- 剑指offer:从上往下打印二叉树
题目描述: 从上往下打印出二叉树的每个节点,同层节点从左至右打印. 解题思路: 实际就是二叉树的中序遍历问题.之前在leetcode刷过类似题目. 利用队列完成即可. 代码: /* struct Tr ...
随机推荐
- SQL 字符串逗号【,】分割去除重复
DROP FUNCTION GetDistinctcreate function GetDistinct(@str varchar(1000))returns varchar(1000)asBEGIN ...
- 使用 OpenAuth.Net 快速搭建 .NET 企业级权限工作流系统
前言 在企业应用开发中,系统权限管理和工作流是比较常见的功能.虽说开发起来难度不大,但从零开始开发一个功能完备的权限管理和工作流系统,往往需要投入大量的时间和精力.今天大姚带领大家来使用 OpenAu ...
- CF1989D Smithing Skill 题解
CF1989D Smithing Skill 这篇题解是我在赛场上的真实思路,所以可能会比较冗长.但是相较于其他题解,读者可以在这篇题解中理解为什么会想到使用动态规划.我认为,授人以鱼不如授人以渔,理 ...
- 洛谷 U388010 题解
洛谷 U388010 题解 link:https://www.luogu.com.cn/problem/U388010 Sol 首先,我们看到这一条件: 对于每一个 \(1 \le i \le n\) ...
- 低代码开发平台,可零代码发布API
RestCloud低代码开发平台可以快速的开发企业级前后端分离的业务系统以及基于微服务架构的业务系统.平台通过建立数据模型和业务模型能够无代码快速的发布API服务,同时也能基于数据模型快速生成Java ...
- RestCloud API管理门户,API接口治理平台
API管理门户主要管理企业内部及外部的所有API,RestCloud API门户支持通过Java代码中的注解自动扫描生成API文档.通过OpenAPI3.0标准文档导入.JSON格式数据导入等多种方式 ...
- MoneyPrinterTurbo – 免费开源的AI短视频生成工具
一.MoneyPrinterTurbo简介 MoneyPrinterTurbo是一款由开发者harry0703基于原有MoneyPrinter项目优化而来的开源AI视频生成工具. 这款工具的核心价值在 ...
- NIO复习(2):channel
上篇学习了NIO的buffer,继续来学习channel,类图如下(注:为了不让图看起来太复杂,隐藏了一些中间的接口) Channel派生了很多子接口,其中最常用的有FileChannel(用于文件操 ...
- Win10纯净版如何设置待机不休眠的问题
有深度技术官网的小伙伴说,每次他的win10纯净版系统电脑开着不操作,就会自动进入休眠状态,你说进休眠就进休眠,但是还无法唤醒.这也导致电脑又要重启,特别是电脑在下载大文件需要很长时间,又不能一直看着 ...
- P1600 [NOIP 2016 提高组] 天天爱跑步解析-树上差分+全局桶
思维难度:cf2300+ 实现方案:贡献计算 方法:线段树合并或者树上差分+桶的统计 思路点补充: 按照题目的设定,如果一个观察员 \(j\) 能够观察到某个人经过,说明 \(j\)一定在第 \(i\ ...