Как можно добавить определенную часть двоичного дерева, но сохранить дерево нетронутым (Java)? - PullRequest
2 голосов
/ 09 июля 2011

Я пытаюсь написать код, который ищет элемент в двоичном дереве, а затем добавляет, начиная с этого элемента. Пока я могу найти правильную позицию и добавить к этой позиции, но я теряю остаток двоичного дерева.

    public void add(String addroot, String addleft)
      if(root!=nodesearch){
        if(root.left!=null){
          root=root.left;
          add(addroot, addleft);
        }
        if(root.right!=null){
          root=root.right;
          add(addroot, addleft);
        }
      }
      else
        root=insert();
    }

insert () добавляет элементы и работает нормально. Спасибо за любую помощь.

Хорошо, теперь я об этом думаю.

private BinaryStringNode local_root = root
public void add()

  if(root!=nodesearch){
    if(local_root.left!=null){
      local_root=local_root.left;
      add();
    }
    if(local_root.right!=null){
      local_root=local_root.right;
      add();
    }
  }
  else
    local_root=insert();
}

Будет ли local_root = insert () использовать метод вставки для root в позиции local_root. Также будет ли local_root = local_root.right проходить через root?

1 Ответ

0 голосов
/ 09 июля 2011

Сначала сделайте это тремя независимыми функциями

void insert(BinaryStringNode root, BinaryStringNode new_node){

}

int add(BinaryStringNode root){

}

BinaryStringNode find(String name){

}

Теперь введите код как можно лучше.

Если вы хотите получить сумму, просто позвоните add(find(s));, где s - этострока

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...