【问题标题】:Implementing a parent node in AVL tree在 AVL 树中实现父节点
【发布时间】:2015-06-11 08:49:42
【问题描述】:

大家好,我正在学习二叉树,并在学习基础知识方面取得了进展。现在我正在学习 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);
   }
  }

您如何跟踪父节点。父节点应该是添加到列表中的第一个元素。下一个节点是它的孩子或后代。如何使用父节点实现二叉树。一个例子会很有帮助,谢谢。

【问题讨论】:

    标签: java binary-search-tree avl-tree


    【解决方案1】:

    由于您正在学习,我会尽量为您指明正确的方向,而不是给您代码。通常所做的是根本不“跟踪”父节点。节点通常只存储它们的后代(左和右孩子)。在沿树向下移动的过程中,可以递归地找到父信息。这有帮助吗?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-04-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多