Работа над заданием.Занятия онлайн, и я отправил электронное письмо своему профессору с тем же вопросом, но я надеюсь получить более быстрый ответ от вас, замечательные люди здесь (так как у меня есть только 2 часа в день, когда я могу работать в школе, и я наткнулся на контрольно-пропускной пункт).
Назначение - завершить код для бинарного дерева поиска, и бла-бла реализовать некоторые вещи.
Я завис на одном куске кода, который просто не могу понять.
Это фрагмент кода из предоставленного класса LinkedBinaryTree.LinkedBinaryTree использует класс BinaryTreeNode для узлов.
public class LinkedBinaryTree<T> implements BinaryTreeADT<T>, Iterable<T>
{
protected BinaryTreeNode<T> root;
protected int modCount;
}
//Constructors
public LinkedBinaryTree()
{
root = null;
}
public LinkedBinaryTree(T element)
{
root = new BinaryTreeNode<T>(element);
}
public LinkedBinaryTree(T element, LinkedBinaryTree<T> left,
LinkedBinaryTree<T> right)
{
root = new BinaryTreeNode<T>(element);
root.setLeft(left.root);
root.setRight(right.root);
}
Это прежде всего то, что я не смог понять.
root.setLeft (left.root);
root.setRight (right.root);
Что такое .root и как это работает.
Переменная используется в двух местах?это какая-то рекурсия / магия, с которой я еще не сталкивался?(И в настоящее время не могу понять) Если это так, я получу чтение, дайте мне знать и укажете мне правильное направление.
Я опубликую код для методов BinaryTreeNode ниже.Я не понимаю эти параметры, которые передаются.
root - переменная типа BinaryTreeNode , но при использовании она передает LinkedBinaryTree либо left или вправо в качестве параметров для метода, для которого требуется переменная типа BinaryTreeNode
public class BinaryTreeNode<T>{
protected T element;
protected BinaryTreeNode<T> left, right;
//Constructors
public BinaryTreeNode(T obj)
{
element = obj;
left = null;
right = null;
}
public BinaryTreeNode(T obj, LinkedBinaryTree<T> left, LinkedBinaryTree<T> right)
{
element = obj;
if (left == null)
this.left = null;
else
this.left = left.getRootNode();
if (right == null)
this.right = null;
else
this.right = right.getRootNode();
}
И рассматриваемые методы
public void setLeft(BinaryTreeNode<T> node)
{
left = node;
}
public void setRight(BinaryTreeNode<T> node)
{
right = node;
}