二叉树(源码+lw+部署文档+讲解等)

文章目录

前言

🌞博主介绍:✌全网粉丝15W+,CSDN特邀作者、211毕业、高级全栈开发程序员、大厂多年工作经验、码云/掘金/华为云/阿里云/InfoQ/StackOverflow/github等平台优质作者、专注于Java、小程序技术领域和毕业项目实战,以及程序定制化开发、全栈讲解、就业辅导✌🌞

👇🏻 精彩专栏 推荐订阅👇🏻
2023-2024年最值得选的微信小程序毕业设计选题大全:100个热门选题推荐✅

2023-2024年最值得选的Java毕业设计选题大全:500个热门选题推荐✅

Java精品实战案例《500套》

微信小程序项目精品案例《500套》

💯文末获取源码+数据库💯
感兴趣的可以先收藏起来,还有大家在毕设选题,项目以及论文编写等相关问题都可以给我留言咨询,希望帮助更多的人

二叉树

性质

1, 我们把树中结点的第一个子结点作为这个结点左结点

2, 我们把一个结点右兄弟结点, 作为右结点

通过上述操作可以将普通的树转换为二叉树

二叉树中的节点最多有两个子节点,左右子节点有严格划分,次序不能颠倒

特点:

二叉树在第i层至多有2的(i-1)次方个节点

层次为k的二叉树至多有2的k次方 - 1个节点

对任何一颗二叉树T,如果其叶子节点数为n0 , 度为2的节点数为n2,则n0 = n2 + 1

具有n个节点的完全二叉树,树的高度为log2n (向下取整)。

如果对一颗有n个结点的完全二叉树的结点按层序从1开始编号,则对任意一结点有:

如果编号i为1,则该结点是二叉树的根;

如果编号i > 1,则其双亲结点编号为 parent(i) = i/2,

若 2i > n 则该结点没有左孩子,否则其左孩子的编号为 2i,

若 2i + 1 > n 则该结点没有右孩子,否则其右孩子的编号为 2i + 1。

二叉树的遍历

广度遍历:

深度遍历:

对于一个树深度遍历右6种情况, 如果限定先左后右的话还剩3中

根 左 右 --> 先序/先根 遍历

左 根 右 --> 中序/中根 遍历

左 右 根 --> 后序/后根 遍历

运用的是递归的分治思想,将每个节点的划分为左子树和右子树

二叉树的建树

前序和后序确定的是根节点的位置,中序用来划分左右子树

所以只有前序+中序或者中序+后序才能建树

二叉搜索树

每一个节点的左子节点都比他小,右子节点都比他大

自平衡的二叉搜索树

在二叉搜索树的基础上每一个节点都满足左右子树的高度相差不超过1

设计的原因是因为二叉树在频繁的添加和删除的过程中造成树变得稀疏,于是可以通过旋转的方式来改进

红黑树

根节点可以任意变换颜色,没有连续的红色,黑高平衡

通过旋转来保证黑高平衡,先左旋再右旋,先右旋再左旋,分情况

源码获取

有疑问私信询问我即可~
大家点赞、收藏、关注、评论啦
精彩专栏推荐订阅:在下方专栏👇🏻
Java精品实战案例《500套》
微信小程序项目精品案例《500套》

相关推荐
ywf12152 小时前
前端的dist包放到后端springboot项目下一起打包
前端·spring boot·后端
还是大剑师兰特8 小时前
Vue3 中的 defineExpose 完全指南
前端·javascript·vue.js
大阿明8 小时前
Spring Boot(快速上手)
java·spring boot·后端
哆啦A梦15888 小时前
Springboot整合MyBatis实现数据库操作
数据库·spring boot·mybatis
bearpping9 小时前
Java进阶,时间与日期,包装类,正则表达式
java
邵奈一9 小时前
清明纪念·时光信笺——项目运行指南
java·实战·项目
sunwenjian8869 小时前
Java进阶——IO 流
java·开发语言·python
sinat_255487819 小时前
读者、作家 Java集合学习笔记
java·笔记·学习
皮皮林5519 小时前
如何画出一张优秀的架构图?(老鸟必备)
java
百锦再9 小时前
Java 并发编程进阶,从线程池、锁、AQS 到并发容器与性能调优全解析
java·开发语言·jvm·spring·kafka·tomcat·maven