繁体   English   中英

在AVL树中实现父节点

[英]Implementing a parent node in AVL tree

大家好,我正在学习二叉树,并且在学习基础知识方面取得了进步。 现在,我正在学习AVL并编写代码来平衡我的树。 但是我遇到了根节点(树的父节点)不平衡的问题。 我计划在节点类中添加一个父节点来跟踪父节点,但是不知道要用父节点实现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;
 }

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);
   }
  }

您如何跟踪父节点。 父节点应该是添加到列表中的第一个元素。 下一个节点是它的子代或后代。 如何实现带有父节点的binaryTree。 一个例子将非常有帮助,谢谢。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM