Привет, ребята, я изучаю бинарные деревья и добился прогресса в изучении основ. Сейчас я изучаю 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;
}
АВЛ-дерево:
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);
}
}
Как вы отслеживаете родительский узел. Родительский узел должен быть самым первым элементом, добавленным в список. Следующие узлы являются его дочерними элементами или потомками. Как реализовать бинарное дерево с родительским узлом. Пример был бы очень полезен, спасибо.