剑指offer(22)从上往下打印二叉树
题目描述
从上往下打印出二叉树的每个节点,同层节点从左至右打印。
题目分析
从下打印就是按层次打印,其实也就是树的广度遍历。
一般来说树的广度遍历用队列,利用先进先出的特点来保存之前节点,并操作之前的节点。
树的深度遍历一般来说用栈或者递归,利用先进后出的特点来保存之前节点,把之前的节点留到后面操作。
代码
/* function TreeNode(x) {
this.val = x;
this.left = null;
this.right = null;
} */
function PrintFromTopToBottom(root) {
const queue = [],
res = [];
if (root === null) {
return res;
}
queue.push(root);
while (queue.length) {
const pRoot = queue.shift();
if (pRoot.left !== null) {
queue.push(pRoot.left);
}
if (pRoot.right !== null) {
queue.push(pRoot.right);
}
res.push(pRoot.val);
}
return res;
}
此外,我们可以用递归来自己创建完全二叉树来做测试。
function TreeNode(x) {
this.val = x;
this.left = null;
this.right = null;
}
function createTree(n) {
if (n === 1) {
return new TreeNode(1);
}
const root = new TreeNode(n);
root.left = createTree(n - 1);
root.right = createTree(n - 1);
return root;
}
const tree = createTree(4);
剑指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 ...
- 【Java】 剑指offer(32) 从上往下打印二叉树
本文参考自<剑指offer>一书,代码采用Java语言. 更多:<剑指Offer>Java实现合集 题目 (一)从上往下打印出二叉树的每个结点,同一层的结点按照从左到右的顺 ...
- 【剑指offer】从上向下打印二叉树
转载请注明出处:http://blog.csdn.net/ns_code/article/details/26089165 剑指offer上的第23题,实际上就是考察二叉树的层序遍历,详细思想能够參考 ...
- Go语言实现:【剑指offer】从上往下打印二叉树
该题目来源于牛客网<剑指offer>专题. 从上往下打印出二叉树的每个节点,同层节点从左至右打印. 不需分层,一维数组. Go语言实现: /** * Definition for a bi ...
- 剑指offer系列20--从上到下打印二叉树
* 20 [题目]从上往下打印出二叉树的每个节点,同层节点从左至右打印. * [思路]从根结点开始,先保存结点,再看根结点的左右结点有没有值. * 有,就将左右值放到集合中: * 根节点输出后,打印根 ...
- 剑指OFFER之从上往下打印二叉树(九度OJ1523)
题目描述: 从上往下打印出二叉树的每个节点,同层节点从左至右打印. 输入: 输入可能包含多个测试样例,输入以EOF结束.对于每个测试案例,输入的第一行一个整数n(1<=n<=1000, : ...
- 剑指offer:从上往下打印二叉树
题目描述: 从上往下打印出二叉树的每个节点,同层节点从左至右打印. 解题思路: 实际就是二叉树的中序遍历问题.之前在leetcode刷过类似题目. 利用队列完成即可. 代码: /* struct Tr ...
随机推荐
- I - 昂贵的聘礼
来源poj1062 年轻的探险家来到了一个印第安部落里.在那里他和酋长的女儿相爱了,于是便向酋长去求亲.酋长要他用10000个金币作为聘礼才答应把女儿嫁给他.探险家拿不出这么多金币,便请求酋长降低要求 ...
- x86指令格式
学习于逆向工程核心原理IA-32指令章节 格式 x86指令格式 指令前缀 出现特定操作码时用作补充说明,图中的冒号前的64就是指令前缀 操作码 实际的指令,如图中的FF.89.80都是操作码 Mod ...
- python中文分词库——pynlpir
安装 pip install pynlpir import pynlpir #加载包 pynlpir.open() #加载nlpir的库,这步是必须的 #否则会出现 段错误/段转储 segment f ...
- java学习(三)--- 修饰符
访问修饰符: default.public.private.protected 非访问修饰符 static: 静态方法,静态变量 final: final变量: final变量能够显示的初始化并且只能 ...
- 班级作业:Java Web环境的搭建
Java Web环境的搭建 一.开发所需工具.(根据你的电脑以及系统选择合适的版本下载) 1.JDK .下载链接:https://www.oracle.com/technetwork/java/jav ...
- nginx配置https访问
一.准备 环境:centos6.8 nginx:1.13.6 二.开始 首先安装依赖包: yum install -y gcc gcc-c++ autoconf automake make ...
- 浅谈Vue 项目性能优化 经验
我优化公司的项目总结的几点: 1.先查看引入的图片大小,如果太大了,可以压缩,压缩路径:https://zhitu.isux.us/ 2.代码包优化, 待下项目开发完成.进行打包源码上线环节,需要对项 ...
- Ubuntu 18.04安装JDK并配置环境变量
1.官网下载jdk 下载链接 http://www.oracle.com/technetwork/java/javase/downloads/index.html 可以根据自己的系统进行下载 2.进行 ...
- java8新特性--Stream的基本介绍和使用
什么是Stream? Stream是一个来自数据源的元素队列并可以进行聚合操作. 数据源:流的来源. 可以是集合,数组,I/O channel, 产生器generator 等 聚合操作:类似SQL语句 ...
- 更新node的版本,node没有安装到c盘,安装到了D盘
百度的很久,只有这一个实用,记录一下 https://www.cnblogs.com/xinjie-just/p/7061619.html