gpt4 book ai didi

java - 在AVL树中实现父节点

转载 作者:行者123 更新时间:2023-12-01 11:26:19 24 4
gpt4 key购买 nike

大家好,我正在学习二叉树,并在学习基础知识方面取得了进展。现在我正在学习 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 - 在AVL树中实现父节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30775961/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com