首页 > Java > java教程 > 正文

设计 AVL 树的类

WBOY
发布: 2024-07-25 06:38:22
原创
301 人浏览过

由于 AVL 树是二叉搜索树,因此 AVLTree 被设计为 BST 的子类。 AVL树是二叉树,因此可以定义AVLTree类来扩展BST类,如下图所示。 BSTTreeNode 类在部分中定义。

Image description

为了平衡树,你需要知道每个节点的高度。为了方便起见,将每个节点的高度存储在 AVLTreeNode 中,并将 AVLTreeNode 定义为 BST.TreeNode 的子类。请注意,TreeNodeBST 中定义为静态内部类。 AVLTreeNode 将被定义为 AVLTree 中的静态内部类。 TreeNode 包含数据字段 elementleftright,它们由 AVLTreeNode 继承。因此,AVLTreeNode包含四个数据字段,如下图所示。

Designing Classes for AVL Trees

BST 类中,createNewNode() 方法创建一个 TreeNode 对象。在 AVLTree 类中重写此方法以创建 AVLTreeNode。注意,BST类中的createNewNode()方法的返回类型是TreeNode,但是createNewNode()AVLTree 类中的 > 方法是 AVLTreeNode。这很好,因为 AVLTreeNodeTreeNode 的子类。

AVLTree 中搜索元素与在常规二叉树中搜索相同,因此 BST 类中定义的 search 方法也适用对于AVLTree

重写

insertdelete 方法来插入和删除元素,并在必要时执行重新平衡操作以确保树平衡。

以上是设计 AVL 树的类的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:dev.to
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!