数据结构(Java实现)-二叉树(上)


树型结构
树是一种非线性的数据结构,它是由n(n>=0)个有限结点组成一个具有层次关系的集合。把它叫做树是因为它看起来像一棵倒挂的树,也就是说它是根朝上,而叶朝下的。

  • 有一个特殊的结点,称为根结点,根结点没有前驱结点
  • 除根结点外,其余结点被分成M(M > 0)个互不相交的集合
  • 树是递归定义的。
  • 树形结构中,子树之间不能有交集,否则就不是树形结构

树与非树
在这里插入图片描述


概念(重要)
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


树的表示形式

最常用的孩子兄弟表示法
在这里插入图片描述


树的应用
在这里插入图片描述


二叉树
概念
一棵二叉树是结点的一个有限集合,该集合:

  1. 或者为空
  2. 或者是由一个根节点加上两棵别称为左子树和右子树的二叉树组成。
    在这里插入图片描述1. 二叉树不存在度大于2的结点
    二叉树的子树有左右之分,次序不能颠倒,因此二叉树是有序树

两种特殊的二叉树
满二叉树: 一棵二叉树,如果每层的结点数都达到最大值,则这棵二叉树就是满二叉树。
如果一棵二叉树的层数为K,且结点总数是(2^k)-1 ,则它就是满二叉树。
完全二叉树: 对于深度为K的,有n个结点的二叉树,当且仅当其每一个结点都与深度为K的满二叉树中编号从0至n-1的结点一一对应时称之为完全二叉树。 要注意的是满二叉树是一种特殊的完全二叉树。如下
在这里插入图片描述
在这里插入图片描述


二叉树的性质
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


在这里插入图片描述


在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


在这里插入图片描述
在这里插入图片描述


在这里插入图片描述


二叉树的存储
二叉树的存储结构分为:顺序存储和类似于链表的链式存储
二叉树的链式存储是通过一个一个的节点引用起来的,常见的表示方式有二叉和三叉表示方式
在这里插入图片描述
这里我们使用孩子表示法


二叉树的基本操作
简单的创建一棵树
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述


二叉树的遍历
所谓遍历(Traversal)是指沿着某条搜索路线,依次对树中每个结点均做一次且仅做一次访问。
NLR:前序遍历(Preorder Traversal 亦称先序遍历)——访问根结点—>根的左子树—>根的右子树。
LNR:中序遍历(Inorder Traversal)——根的左子树—>根节点—>根的右子树。
LRN:后序遍历(Postorder Traversal)——根的左子树—>根的右子树—>根节点。
在这里插入图片描述
遇到左子树和右子树都不打印,遇到根时才打印


前序遍历
根,左子树,右子树
在这里插入图片描述

首先进入的是根,则打印根A;然后走左子树,左子树的第一个节点B又可以看作是根,打印根B;之后再走左子树,左子树的第一个节点是D,D又可以看作是根,打印D;走左子树,左子树为null,走右子树,右子树为null;则以D为根的这棵树结束。返回到D。D作为上一次的左子树,走右子树,右子树为null;则以B为根的这棵树结束,返回到B。B作为上上一次的左子树,走右子树C,C又可以看作是根,则打印C;之后走左子树…依次如此。
上述前序遍历的结果是A,B,D,C,E,F


中序遍历

在这里插入图片描述
左子树,根,右子树
中序遍历的结果是:D,B,A,E,C,F


后序遍历
在这里插入图片描述

左子树,右子树,根
上述后序遍历的结果是:D,B,E,F,C,A


在这里插入图片描述


层序遍历
层序遍历就是从所在二叉树的根节点出发,首先访问第一层的树根节点,然后从左到右访问第2层
上的节点,接着是第三层的节点,以此类推,自上而下,自左至右逐层访问树的结点的过程就是层序遍历。
在这里插入图片描述
上述层序遍历的结果为:A,B,C,D,E,F


在这里插入图片描述
完全二叉树可以保证前k-1层为全满状态
于是
在这里插入图片描述
前序遍历为:A,B,D,H,E,C,F,G


在这里插入图片描述
在这里插入图片描述


在这里插入图片描述
在这里插入图片描述选D


在这里插入图片描述

在这里插入图片描述


二叉树的基本操作
前序遍历
在这里插入图片描述

在这里插入图片描述


带有返回值的前序遍历
在这里插入图片描述

在这里插入图片描述
结果如下:
在这里插入图片描述


在这里插入图片描述
三种遍历的区别在于具体在什么时机去打印元素
在这里插入图片描述


获取树中节点的个数
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
结果如下
在这里插入图片描述


获取叶子节点的个数
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述


获取第K层节点的个数在这里插入图片描述

在这里插入图片描述
在这里插入图片描述


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

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

相关文章

SSL/CA 证书及其相关证书文件(pem、crt、cer、key、csr)

数字证书是网络世界中的身份证,数字证书为实现双方安全通信提供了电子认证。数字证书中含有密钥对所有者的识别信息,通过验证识别信息的真伪实现对证书持有者身份的认证。数字证书可以在网络世界中为互不见面的用户建立安全可靠的信任关系,这…

tomcat高可用和nginx高可用

tomcat高可用和nginx高可用 小白教程,一看就会,一做就成。 1.什么是高可用? 高可用HA(High Availability)是分布式系统架构设计中必须考虑的因素之一,它通常是指,通过设计减少系统不能提供服务…

如何构建多域名HTTPS代理服务器转发

在当今互联网时代,安全可靠的网络访问是至关重要的。本文将介绍如何使用SNI Routing技术来构建多域名HTTPS代理服务器转发,轻松实现多域名的安全访问和数据传输。 SNI代表"Server Name Indication",是TLS协议的扩展,用于…

C#_GDI+ 绘图编程入门

官网提供相关API GDI 基本图形功能_drawing 高级二维和矢量图形功能_drawing2D GDI 图像处理功能_Imaging GDI 排版功能_text Windows 窗体应用程序提供打印功能_Printing 像素 构成图像的最小单位就是像素;屏幕上显示不管是位图或者矢量图,当描述…

《华为认证》6to4自动隧道

实验需求: 在NE1和NE3之间使用tunnel 口创建6to4自动隧道,实现PC1和PC2互访。 步骤1:配置ipv4地址,如图所示: 步骤2:配置NE1和NE3的ipv4路由,是两端的ipv4网络能够互访 R1: ip route-static 0.0.0.0 0…

机器学习笔记之优化算法(十九)经典牛顿法的收敛性分析

机器学习笔记之优化算法——经典牛顿法的收敛性分析 引言回顾:算法的收敛性分析 Wolfe \text{Wolfe} Wolfe准则的收敛性分析梯度下降法在凸函数的收敛性分析梯度下降法在强凸函数的收敛性分析 经典牛顿法的收敛性分析收敛性定理介绍证明过程关于隐含条件的说明 引言…

跳跃游戏【贪心算法】

跳跃游戏 给你一个非负整数数组 nums ,你最初位于数组的 第一个下标 。数组中的每个元素代表你在该位置可以跳跃的最大长度。 判断你是否能够到达最后一个下标,如果可以,返回 true ;否则,返回 false 。在这里插入图片…

二级MySQL(七)——表格数据修改

1、修改表格中部分数据 将表格某一行的数据修改,这里用的UPDATE语句: UPDATE tb_student SET studentName 黄涛,native湖北,nation汉 WHERE studentNo 2014210103; 结果: 2、修改表格某一列全部数据 比如性别全部设置为‘女’ UPDATE…

langchain ChatGPT AI私有知识库

企业知识库 原理就是把文档变为向量数据库,然后搜索向量数据库,把相似的数据和问题作为prompt, 输入到大模型,再利用GPT强大的自然语言处理、推理和分析等方面的能力将答案返回给用户 什么是langchain? langchain是一个强大的…

用AI + Milvus Cloud搭建着装搭配推荐系统

在上一篇文章中,我们学习了如何利用人工智能技术(例如开源 AI 向量数据库 Milvus Cloud 和 Hugging Face 模型)寻找与自己穿搭风格相似的明星。在这篇文章中,我们将进一步介绍如何通过对上篇文章中的项目代码稍作修改,获得更详细和准确的结果,文末附赠彩蛋。 注:试用此…

六、pikachu之目录遍历

文章目录 一、目录遍历概述二、目录遍历实战 一、目录遍历概述 在web功能设计中,很多时候我们会要将需要访问的文件定义成变量,从而让前端的功能便的更加灵活。 当用户发起一个前端的请求时,便会将请求的这个文件的值(比如文件名…

TCP拥塞控制详解 | 7. 超越TCP

网络传输问题本质上是对网络资源的共享和复用问题,因此拥塞控制是网络工程领域的核心问题之一,并且随着互联网和数据中心流量的爆炸式增长,相关算法和机制出现了很多创新,本系列是免费电子书《TCP Congestion Control: A Systems …