Java 在AVL树中实现父节点

Java 在AVL树中实现父节点,java,binary-search-tree,avl-tree,Java,Binary Search Tree,Avl Tree,大家好,我正在学习二叉树,在学习基础知识方面取得了进步。现在我正在学习AVL并编写代码来平衡我的树。但我遇到了一个障碍,因为根节点(树的父节点)没有得到平衡。我计划在node类中添加一个父节点来跟踪父节点,但不知道如何使用父节点实现AVL树。请有人举个例子会很有帮助 节点类: public class BinaryNode<T> { private BinaryNode<T> parent; private BinaryNode<T> leftChil

大家好,我正在学习二叉树,在学习基础知识方面取得了进步。现在我正在学习AVL并编写代码来平衡我的树。但我遇到了一个障碍,因为根节点(树的父节点)没有得到平衡。我计划在node类中添加一个父节点来跟踪父节点,但不知道如何使用父节点实现AVL树。请有人举个例子会很有帮助

节点类:

public class BinaryNode<T> {
  private BinaryNode<T> parent;
  private BinaryNode<T> leftChild;
  private BinaryNode<T> rightChild;
  private int height;
  private T data;

 public BinaryNode(T data) {
  this(data, null,null,null,0)'
   }
 public BinaryNode(T data, BinaryNode<T> parent, BinaryNode<T> leftChild, BinaryNode<T> rightChild, int height) {
 this.data=data;
 this.parent = parent;
 this.leftChild= leftChild;
 this.rightChild = rightChild;
 this.height = 0;
 }
公共类二进制节点{
私有二进制节点父节点;
私有二进制节点leftChild;
私有二进制节点rightChild;
私人内部高度;
私有T数据;
公共二进制节点(T数据){
这(数据,null,null,null,0)'
}
公共BinaryNode(T数据、BinaryNode父节点、BinaryNode leftChild、BinaryNode rightChild、整数高度){
这个。数据=数据;
this.parent=parent;
this.leftChild=leftChild;
this.rightChild=rightChild;
这个高度=0;
}
AVL树:

public class AVLTree  { 
 protected BinaryNode<T> root;
 public AVLTree() {}
 public AVLTree(T data) {
 root = new BinaryNode<T>(data);
 }

public void insert(T data) {
 BinaryNode<T> newNode = new BinaryNode<T>(data);
 if(root == null){
  root = newNode;
    }
  else {
    insert(root, newNode);
   }
  }
公共类AVLTree{
受保护的二进制节点根;
公共AVLTree(){}
公共AVLTree(T数据){
root=新的二进制节点(数据);
}
公共空白插入(T数据){
BinaryNode newNode=新的BinaryNode(数据);
if(root==null){
根=新节点;
}
否则{
插入(根,新节点);
}
}

如何跟踪父节点。父节点应该是添加到列表中的第一个元素。下一个节点是它的子节点或子节点。如何使用父节点实现二进制树。一个示例将非常有用,谢谢。

由于您正在学习,我将尝试为您指出正确的方向,而不是给出you代码。通常所做的是根本不“跟踪”父节点。节点通常只存储其子节点(左和右子节点)。在沿树递归移动的过程中可以找到父节点信息。这有帮助吗