
树
Willow_zhu
这个作者很懒,什么都没留下…
展开
-
java语言实现平衡二叉树的左旋转、右旋转和双旋转
平衡二叉树又叫平衡二叉搜索树,或者AVL树,有如下特点:可以是一棵空树或者它的左右子树的高度差的绝对值不大于1,并且左右子树也是平衡二叉树当二叉树不平衡的时候,可以通过“旋转”来使它平衡左旋转(适用于右子树高度 - 左子树高度 > 1)右旋转(适用于左子树高度 - 右子树高度 > 1)双旋转左旋转思路分析创建一个新的节点,且其值等于二叉树根节点的...原创 2020-03-25 22:46:44 · 739 阅读 · 0 评论 -
Java语言实现二叉排序树的创建和删除节点
二叉排序树二叉排序树中任意一个非叶子节点的值,大于其左子节点的值,小于其右子节点的值。如果有相等的值,可以放在左子节点或者右子节点。删除节点删除节点分为三种情况删除的节点是叶子结点删除的节点是非叶子节点,但是只有一棵子树,左子树或者右子树删除的节点是非叶子节点,有两棵子树1.删除叶子结点先找到待删除节点再找到它的父节点确定待删除节点是父节点的左子节点还是右子节点如...原创 2020-03-25 10:27:38 · 205 阅读 · 0 评论 -
java语言构建哈夫曼树
哈夫曼树给定 n 个权值,作为 n 个叶子结点,构造一个二叉树,如果该树的带权路径长度最小,就称该二叉树为最优二叉树,也称为哈夫曼树。构建步骤将权值序列从小到大排序,每个权值都看作是一个简单的二叉树。取出根节点权值最小的两棵二叉树,组成一棵新的二叉树,新二叉树的根节点的值为它左右子节点的值之和。注意:对某个节点,构建过程中,使其右子节点权值不小于左子节点权值以现有的二叉树的根节点的值,...原创 2020-03-24 18:59:23 · 1187 阅读 · 0 评论 -
java语言实现线索二叉树
有如下一棵二叉树:我们发现,有一部分节点(3,4,5,6号节点)的左右指针域为空,比较浪费空间。**且 n 个节点的二叉树含有 n+1 个空指针域。**但是没有这些左右指针域又不行,如果能够充分利用他们,那再好不过了。我们可以将他们用来指向自己的某种遍历方式的前序或者后序节点,方便遍历。这就是线索化二叉树,附加的指针称为“线索”。以中序遍历为例,线索化二叉树如下图:如何实现呢?1....原创 2020-03-20 23:25:18 · 295 阅读 · 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 · 264 阅读 · 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 · 369 阅读 · 0 评论