![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
二叉树
文章平均质量分 92
七十一Li
这个作者很懒,什么都没留下…
展开
-
JAVA实现红黑树重构 详解
一,红黑树的性质红黑树也是一种自平衡的二叉搜索树红黑树必须满足如下五条性质(1)节点是 RED 或者 BLACk(2)根节点是 BLACK(3)叶子节点都是 BLACK(4)RED 节点的子节点是 BLACK(5)从任一节点到叶子节点的所有路径都包含相同数目的 BLACK 节点。二,红黑树和B树的等价变换1.如何变换红黑树和 4阶B树有等价性质BLACK 节点和它的 RED 子节点融合在一起,形成一个B树节点红黑树的 BLACK 节点个数和 4 阶B树的总结点个数相同有人会原创 2020-08-13 16:35:27 · 226 阅读 · 0 评论 -
JAVA实现AVL树的重构,解决因为添加和删除导致的失衡问题
AVL树特点(1)每个节点的平衡因子只可能是-1,0,1(否则失衡)。(2)每个节点的左右子树高度差不能超过1。(3)搜索、添加、删除的时间复杂度和高度差不多为 O(log n)。为什么使用AVL树二叉搜索树对节点的删除和添加都有可能让二叉树退化为链表,这样二叉搜索树的高度就变得很高,直接导致了搜索、添加、删除的时间复杂度变高。所以我们考虑再添加删除后,使用尽量少的调整让树的高度变小,达到适度的平衡。进而提高删除,搜索,添加的效率。重构代码AVL树是BST(二叉搜索树)的子类,BST代码在之原创 2020-05-21 20:41:30 · 680 阅读 · 0 评论 -
JAVA搜索二叉树的重构,比较器的设计,添加方法,删除方法,判断元素是否存在于树中
~~接着实现搜索二叉树,BST继承了BinaryTree(写在另一篇中了),由于是继承二叉树,搜索二叉树中只写了其特有的方法。本文章仅供学习参考使用,转载附命出处。__方法包括:添加方法,删除方法,判断结点是否存在的方法。代码中BST的一个构造方法中需要加入比较器。为了防止是对引用数据类型进行比较多次比较。意思大概是这样的,如果你在树的初始化中添加比较器,那么我们就按照比较器的比较逻辑来对比。...原创 2020-04-27 21:59:06 · 279 阅读 · 0 评论 -
JAVA二叉树的重构,设计与增强遍历接口,找前驱,找后继,判断是否为完全二叉树,非递归求树的高度
__ 最近复习到了搜索二叉树,实现了搜索二叉树的一些主要的方法。写完后代码十分繁杂。于是对代码进行重构,分为Binarytree(父类),和BTS(子类)。本代码仅供学习参考使用,转载请附出处。~~Binary实现的主要方法有:求树的大小,求树是否为空,树的清空,前序遍历,中序遍历,后续遍历,层序遍历,求树的高度,求前驱,求后继,求是否为完全二叉树,以及简单的打印树状二叉树其中加入了Visit...原创 2020-04-27 21:41:12 · 183 阅读 · 0 评论