Я пытаюсь изменить свои конечные узлы в своем двоичном дереве. Как создать методы change_right_tree и change_left_tree?scala бинарное дерево, добавление элемента
Компилятор жалуется, что я переназначаю значение val. Но когда я меняю вещи на var, я получаю ковариантные ошибки.
sealed abstract class Tree[+T] {
}
case object End extends Tree[Nothing] {
override def toString = "."
}
case class Node[+T](var question: String, left: Tree[T] = End, right: Tree[T] = End) extends Tree[T] {
override def toString = "T(" + question.toString + " " + left.toString + " " + right.toString + ")"
def set_question(str : String) = {question = str}
def get_answer(answer : Boolean) = {
if (answer){
left
}else {
right
}
}
// unclear on what I need to do to make this work
def change_left_tree(new_tree : Tree[T]) = {this.left = new_tree}
def change_right_tree(new_tree : Tree[T]) = {this.right = new_tree}
}
вы привязывания изменить листья? Или вы пытаетесь изменить только первый левый узел с 1-го узла? – McShep
im, пытающийся «заменить» текущий левый узел новым узлом, который я создал. Кажется, я пытаюсь изменить лист? (не совсем уверен в терминологии, но если раньше «осталось» значение 4 и продолжалось вниз по дереву, я хочу изменить «левый» на 10 и сделать его последующие ветви «END», «END») – user1639926