首页  >  文章  >  Java  >  设计 AVL 树的类

设计 AVL 树的类

WBOY
WBOY原创
2024-07-25 06:38:22336浏览

由于 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中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn