![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
树
Willow_zhu
这个作者很懒,什么都没留下…
展开
-
java语言实现平衡二叉树的左旋转、右旋转和双旋转
平衡二叉树又叫平衡二叉搜索树,或者AVL树,有如下特点: 可以是一棵空树 或者它的左右子树的高度差的绝对值不大于1,并且左右子树也是平衡二叉树 当二叉树不平衡的时候,可以通过“旋转”来使它平衡 左旋转(适用于右子树高度 - 左子树高度 > 1) 右旋转(适用于左子树高度 - 右子树高度 > 1) 双旋转 左旋转 思路分析 创建一个新的节点,且其值等于二叉树根节点的...原创 2020-03-25 22:46:44 · 545 阅读 · 0 评论 -
Java语言实现二叉排序树的创建和删除节点
二叉排序树 二叉排序树中任意一个非叶子节点的值,大于其左子节点的值,小于其右子节点的值。如果有相等的值,可以放在左子节点或者右子节点。 删除节点 删除节点分为三种情况 删除的节点是叶子结点 删除的节点是非叶子节点,但是只有一棵子树,左子树或者右子树 删除的节点是非叶子节点,有两棵子树 1.删除叶子结点 先找到待删除节点 再找到它的父节点 确定待删除节点是父节点的左子节点还是右子节点 如...原创 2020-03-25 10:27:38 · 167 阅读 · 0 评论 -
java语言构建哈夫曼树
哈夫曼树 给定 n 个权值,作为 n 个叶子结点,构造一个二叉树,如果该树的带权路径长度最小,就称该二叉树为最优二叉树,也称为哈夫曼树。 构建步骤 将权值序列从小到大排序,每个权值都看作是一个简单的二叉树。 取出根节点权值最小的两棵二叉树,组成一棵新的二叉树,新二叉树的根节点的值为它左右子节点的值之和。注意:对某个节点,构建过程中,使其右子节点权值不小于左子节点权值 以现有的二叉树的根节点的值,...原创 2020-03-24 18:59:23 · 1083 阅读 · 0 评论 -
java语言实现线索二叉树
有如下一棵二叉树: 我们发现,有一部分节点(3,4,5,6号节点)的左右指针域为空,比较浪费空间。**且 n 个节点的二叉树含有 n+1 个空指针域。**但是没有这些左右指针域又不行,如果能够充分利用他们,那再好不过了。 我们可以将他们用来指向自己的某种遍历方式的前序或者后序节点,方便遍历。这就是线索化二叉树,附加的指针称为“线索”。 以中序遍历为例,线索化二叉树如下图: 如何实现呢? 1....原创 2020-03-20 23:25:18 · 256 阅读 · 0 评论 -
java语言实现顺序存储二叉树的遍历
将二叉树顺序存储到数组中,有如下特点: (1)节点编号从 0 开始,因为数组下标也是从 0 开始 (2)顺序存储二叉树通常指考虑完全二叉树 (3)第 n 个节点的左子节点的编号(或者在数组中的下标)为 2n+1 (4)第 n 个节点的右子节点的编号(或者在数组中的下标)为 2n+2 (3)第 n 个节点的父节点的编号(或者在数组中的下标)为 (n-1)/2 有一个二叉树, 顺序存储到数组...原创 2020-03-19 22:08:44 · 211 阅读 · 0 评论 -
java语言实现二叉树的遍历和查找(前序、中序、后序)
首先,创建节点类,并在节点中定义前序、中序、后序的相关方法 public class Node { private int id; private String name; private Node left; private Node right; public Node(int id, String name) { this.id ...原创 2020-03-19 20:51:52 · 330 阅读 · 0 评论