剑指offer面试题23 从上往下打印二叉树

考察点

树的遍历

知识点

题目

分析
题目要求从上到下打印二叉树,类似这种题目的思路就是用归纳法,通过一些例子找到数据的规律找一个合适的数据结构,这道题目很明显不能按照树的三种遍历方式去解,要按照6,10,5,7,9,11的顺序遍历,5和7是6的子结点,9和11是10的子结点,也就是说需要先遍历完父结点,再遍历子结点,同时在遍历父结点的时候要先把子结点存到这个数据结构里面,同时要求先入先出,那么很明显这个结构就是队列

import java.util.Queue;
import java.util.LinkedList;public class BinaryTree {Node root;public BinaryTree() {this.root = null;}public void insertTree(int val) {if (this.root == null) {Node root = new Node(val);this.root = root;} else {insertChildTree(this.root,val);}}public void insertChildTree(Node node,int val) {if (node != null && val < node.val) {if (node.leftChild == null) {node.leftChild = new Node(val);} else {insertChildTree(node.leftChild,val);}}if (node != null && val > node.val) {if (node.rightChild == null) {node.rightChild = new Node(val);} else {insertChildTree(node.rightChild,val);}}}public Node getRoot() {return this.root;}public void levelPrint(Node root) {Queue q = new LinkedList<>();q.add(root);while(q.size() > 0) {Node node = (Node) q.remove();System.out.println(node.val);if (node.leftChild != null) {q.add(node.leftChild);}if (node.rightChild != null) {q.add(node.rightChild);}}}
}
public class Node{int val;Node leftChild;Node rightChild;public Node(int data) {this.val = data;this.leftChild = null;this.rightChild = null;}
}
public class TwentyThree {public static void main(String[] args) {BinaryTree tree = new BinaryTree();tree.insertTree(8);tree.insertTree(6);tree.insertTree(10);tree.insertTree(5);tree.insertTree(7);tree.insertTree(9);tree.insertTree(11);tree.levelPrint(tree.getRoot());}}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/720114.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【NR 定位】3GPP NR Positioning 5G定位标准解读(二)

目录 前言 2. UE定位方法的作用 3. 标准UE定位方法 3.1 引言 3.2 网络辅助的GNSS方法 3.3 OTDOA定位 3.4 增强小区ID方法 3.5 气压传感器定位 3.6 WLAN定位 3.7 蓝牙定位 3.8 TBS定位 3.9 运动传感器定位 3.10 NR增强小区ID方法 3.11 多RTT定位 3.12 DL-AoD定位…

大厂求职者必看!如何用简单工厂模式征服面试官?

「面试官」: 您好&#xff01;今天我们将探讨简单工厂模式。首先&#xff0c;您能解释一下什么是简单工厂模式吗&#xff1f; 「求职者」: 当然&#xff0c;简单工厂模式是一种创建对象的设计模式&#xff0c;「它通过一个单独的工厂类来决定实例化哪一个继承类。这个模式能够解…

Qt程序设计-批量读取文本文件并修改保存

本文实例演示Qt中如何批量读取文本文件并修改保存。 创建控制台项目添加如下代码 #include <QCoreApplication> #include <QDirIterator> #include <QTextStream>int main(int argc, char *argv[]) {QCoreApplication a(argc, argv);// 设置要处理的目录路…

温湿度传感器SHT21

SHT21是一款基于IIC的温湿度传感器&#xff0c;它的引脚及定义如下&#xff1a; 标准的IIC器件&#xff0c;没有其他多余的引脚&#xff0c;应用框图如下&#xff1a; 温度的测量范围是-40到125℃&#xff0c;湿度测量范围0-100%RH&#xff0c;具体参数及采样精度见下图&#x…

HM_2019在面积不变情况下编辑网格

首先&#xff0c;应该保存其形状&#xff0c;计算他的面积。让面积不变作为一个约束&#xff0c;然后进行网格的形变。

面试官:你知道几种数组扁平化的方法?

面试官&#xff1a;你知道几种数组扁平化的方法&#xff1f; 数组扁平化相信不少掘友在一些面试中被问到过&#xff0c;这在我们日常编程中也是一个常规操作&#xff0c;它需要我们将一个多维数组转化成一个一维数组。当然&#xff0c;我相信很多掘友都能回答上这个问题&#x…

【网站项目】154大学生创新创业平台竞赛管理子系统

&#x1f64a;作者简介&#xff1a;拥有多年开发工作经验&#xff0c;分享技术代码帮助学生学习&#xff0c;独立完成自己的项目或者毕业设计。 代码可以私聊博主获取。&#x1f339;赠送计算机毕业设计600个选题excel文件&#xff0c;帮助大学选题。赠送开题报告模板&#xff…

uniapp+node.js前后端做帖子模块:分享帖子和分享页面(社区管理平台的小程序)

目录 0前提1.一些准备1.1表帖子表 post 1.2总体思路 2.前端3.后端 &#x1f44d; 点赞&#xff0c;你的认可是我创作的动力&#xff01; ⭐️ 收藏&#xff0c;你的青睐是我努力的方向&#xff01; ✏️ 评论&#xff0c;你的意见是我进步的财富&#xff01; 0前提 温馨提示…

d2-crud-plus 使用小技巧(二)—— 路由跳转查询

需求 项目中要在a.vue界面点击表格中数据&#xff0c;携带参数跳转到b.vue界面&#xff0c;并进行查询。需要在d2-crud-plus框架下实现。 解决方法 使用插槽将要点击的数据添加上点击事件&#xff0c;在点击事件中添加路由跳转&#xff0c;并携带参数。 在目标界面使用对外…

单页面应用的优缺点

单页面应用&#xff08;SPA&#xff0c;Single Page Application&#xff09;是一种特殊的Web应用&#xff0c;其所有页面操作和交互都通过JavaScript、AJAX、HTML5和CSS3等前端技术在浏览器中完成&#xff0c;无需每次请求都重新加载整个页面。这种应用的设计模式在近年来越来…

js中的递归

理解 在函数内部可以调用其他函数,如果这个函数在内部调用了自身,那么这个函数就是递归函数 递归的优点 代码简洁性,递归可以用简介的代码实现复杂的问题逻辑清晰易于理解 递归缺点 调用栈溢出,递归中如何递归层次过深,超过了js引擎的调用栈深度限制,就会导致出现 "最…

GIN与Echo:选择正确Go框架的指南

您是否在Go中构建Web应用&#xff1f;选择正确的框架至关重要&#xff01;GIN和Echo是两个热门选择&#xff0c;每个都有其优势和特点。本指南将详细介绍每个框架的特性、速度、社区热度以及它们各自擅长的项目类型。最后&#xff0c;您将能够为您的下一个Web项目选择完美的框架…

C++11常用知识分享(一)【列表初始化 || 简化声明 || 范围for || 左右值 || 可变参数模板】

目录 一. 列表初始化 1&#xff09;用法 2) initializer_list 小节&#xff1a; 二&#xff0c;简化声明 1) &#xff0c;auto 2) &#xff0c;decltype类 3)&#xff0c;nullptr 三&#xff0c;范围for 四&#xff0c;C11后&#xff0c;STL容器变化 五&#xff0c…

一篇文章教会你如何在IOS真机上完美运行React Native

一篇文章教会你如何在IOS真机上完美运行React Native 项目初始化项目配置可能遇到的问题没有账号也没有Team设备上没有打开开发者模式&#xff0c;也没有信任开发者证书 无线调试 项目初始化 在终端使用**npx react-native init ProjectName**初始化React Native项目。 进入项…

运维随录实战(5)之centos搭建jenkins

一,搭建jenkins准备 下载安装jdk环境 -》版本 jdk11 下载安装maven环境 -》版本 maven 3.8.8 git -》版本 1.8.3.1 yum install git jenkins安装版本:2.414.3 下载地址:https://get.jenkins.io/war-stable/2.414.3/jenkins.war 注:jenkins版本与jdk版本有一定的对应关…

力扣550 游戏玩法分析 IV

目录 题目描述 思路整理 1. 首次登录日期 2. 第二天登录 3. 计算比率 实现思路 完整代码及解释 题目描述 Table: Activity ----------------------- | Column Name | Type | ----------------------- | player_id | int | | device_id | int | | ev…

117.移除链表元素(力扣)

题目描述 代码解决 class Solution { public:ListNode* removeElements(ListNode* head, int val) {//删除头节点while(head!NULL&&head->valval){ListNode*tmphead;headhead->next;delete tmp;}//删除非头节点ListNode*curhead;while(cur!NULL&&cur-&g…

安卓虚拟机ART和Dalvik

目录 一、JVM和Dalvik1.1 基于栈的虚拟机字节码指令执行过程 1.2 基于寄存器的虚拟机 二、ART与Dalvikdex2aotAndroid N的运作方式 三、总结 一、JVM和Dalvik Android应用程序运行在Dalvik/ART虚拟机&#xff0c;并且每一个应用程序对应有一个单独的Dalvik虚拟机实例。 Dalvik…

python入门第十七节常用的高级函数

常用的高级函数 常用的高阶函数filter(function, iterable)map(func, *iterables)reduce(function, iterable[, initial]) 常用的高阶函数 定义&#xff1a;参数或返回值为其他函数的函数 filter(function, iterable) function&#xff1a;函数&#xff08;function 必需能够…

Vue.js 实用技巧:深入理解 Vue.set 方法

&#x1f90d; 前端开发工程师、技术日更博主、已过CET6 &#x1f368; 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 &#x1f560; 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 &#x1f35a; 蓝桥云课签约作者、上架课程《Vue.js 和 E…