JavaSE精选-树

简介: JavaSE精选-树

二叉树

性质

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

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

红黑树

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

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

目录
相关文章
|
4月前
|
存储 安全 Java
JavaSE—集合(零基础讲解完整版)
JavaSE—集合(零基础讲解完整版)
|
6月前
|
缓存 Java 编译器
JavaSE精选-栈和队列
JavaSE精选-栈和队列
30 1
|
6月前
|
存储 安全 Java
JavaSE精选-集合
JavaSE精选-集合
35 0
|
6月前
|
Java 编译器
JavaSE基础精选-1基础语法
JavaSE基础精选-1基础语法
35 0
|
6月前
|
Java 编译器
JavaSE基础精选-面向对象
JavaSE基础精选-面向对象
21 0
|
6月前
|
存储 安全 Java
剑指offer全集系列Java版本(2)
剑指offer全集系列Java版本(2)
36 0
|
6月前
|
存储 Java
剑指offer全集系列Java版本(1)
剑指offer全集系列Java版本(1)
42 0
|
机器学习/深度学习 算法 Java
【JavaSE专栏36】函数递归算法
【JavaSE专栏36】函数递归算法
101 0
|
Java C++
线段树 模板 Java语言版
线段树 模板 Java语言版
68 0
|
算法 Java API
PAT乙级【Java题解合集】
这个暑假博主用大概两周不到的闲暇时间把PAT乙级的110道算法题全部肝完了,个人感觉题目的难度大部分在中等偏下,大概有二十道左右的题目还是蛮有意思的,值得细细去钻研,本专栏非常适合新手入门算法,也适合Java算法老手巩固一些基本知识点,由于C站上关于PAT乙级Java的题解很少,这边博主也是用心给大家整理了110道题目的JAVA详解,题解代码中会有博主踩坑后放的注释可供大家学习参考,后期会不断完善专栏内容,欢迎您的订阅!
PAT乙级【Java题解合集】