树之设计【AVL树、红黑树的设计】

技术树之设计【AVL树、红黑树的设计】 树之设计【AVL树、红黑树的设计】树之设计【AVL树、红黑树的设计】1,设计之初:? 思考:AVL树的意义:高度平衡二叉树,用来维持整棵树是一棵平衡的二叉树,那么

树形设计【AVL树,红黑树设计】。

树之设计【AVL树、红黑树的设计】

1,设计之初:

?思考:AVL树的意义:用一个高度平衡的二叉树来维持整棵树为一个平衡的二叉树,所以在继承父类[BST二叉查找树]的基础上,考虑AVL什么时候需要调整它的平衡。

 --------------------------------------BST 二叉搜索树,进行插入(增加)结点之后的树,可能失衡,需要调整。

   -------------------而调整树的主要工作,应该交由AVL 平衡二叉树来完成

【 过程:BST (内部知道发生了失衡,所以需要做出反应),它定义了一个接口方法(调整平衡方法)来应对失衡情况,这个调整平衡方法,交由能力最强的AVL树去具体实现】

接下来,我们来谈谈调整平衡法的具体实现:

1.首先从插入节点的位置开始,找到第一个不平衡的祖父母节点【这个过程需要判断节点不平衡】-需要节点高度属性。

-

-解决方案:AVL树【此刻需要有一个带有高度属性的节点类】重构节点类,添加高度属性。

2.重构后,回到BST中插入(添加)接口的方法:发现该方法的内部创建结点时,使用的结点对象都是通用的结点,并没有使用 AVL 树定义的结点类对象,小于高度属性。

回到AVL树,在AVL树中无法高度判断是否失衡。

--解决:在BST中定义一个创建结点接口方法(默认:创建的节点是公共节点),然后子类 AVL 树再对创建结点接口方法进行重写,

因此,当您需要在添加(插入)接口的方法中创建节点时,您可以使用创建出带有高度属性的结点对象。.

2,设计过程:

内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/51631.html

(0)

相关推荐

  • Redis的底层数据结构-跳表

    技术Redis的底层数据结构-跳表 Redis的底层数据结构-跳表跳跃表(skiplist)是一种有序数据结构,它通过在每个节点中维持多个指向其它节点的指针,从而达到快速访问节点的目的。具有如下性质:1

    礼包 2021年11月11日
  • 同学过生日送什么礼物好,同学过生日,送什么礼物好呢

    技术同学过生日送什么礼物好,同学过生日,送什么礼物好呢送同学礼物的时候,相信只要用心,就一定会让你们之间的感情得到进一步的加深!尤其是在同学过生日的时候,送同学生日礼物推荐一定要推荐那些带有心意的生日礼物才行!不过送同学

    生活 2021年10月24日
  • 如何进行SpringBoot开发环境热部署的配置

    技术如何进行SpringBoot开发环境热部署的配置如何进行SpringBoot开发环境热部署的配置,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。在实际

    攻略 2021年11月18日
  • math函数excel使用技巧(math库中的数学函数)

    技术Math函数怎么使用本篇内容主要讲解“Math函数怎么使用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Math函数怎么使用”吧!Math函数Math.round(3.6

    攻略 2021年12月22日
  • MySQL 5.7中PREPARE、EXECUTE、DEALLOCATE语句怎么用

    技术MySQL 5.7中PREPARE、EXECUTE、DEALLOCATE语句怎么用小编给大家分享一下MySQL 5.7中PREPARE、EXECUTE、DEALLOCATE语句怎么用,相信大部分人都还不怎么了解,因此

    攻略 2021年10月30日
  • oracle存储过程怎么创建日志表(oracle添加归档日志文件)

    技术Oracle日志组中如何添加冗余文件和日志组这篇文章将为大家详细讲解有关Oracle日志组中如何添加冗余文件和日志组,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。rac中需要指定t

    攻略 2021年12月17日