Я работаю над упражнением Двоичное дерево поиска: Вставка на HackerRank. Вот описание проблемы:Двоичное дерево поиска: Вставка
Вам предоставляется указатель на корень двоичного дерева поиска и значение, которое нужно вставить в дерево. Вставьте это значение в соответствующее место в двоичном дереве поиска и верните корень обновленного двоичного дерева. Вам просто нужно выполнить функцию.
Я представил следующее решение и прошел 4 из 6 тестовых случаев и не смог выполнить 2 из 6 тестовых случаев. Проблема заключается в том, что я не могу увидеть два неудачных теста, поэтому я не уверен, почему они не работают. Я попытался создать свои собственные тестовые примеры, и они, похоже, работали правильно. Можете ли вы придумать какие-либо тестовые примеры, на которые мое решение не будет работать? Я надеюсь, кто-то может мне точку в правильном направлении
/* Node is defined as :
class Node
int data;
Node left;
Node right;
*/
static Node Insert(Node root,int value)
{
if (root == null){
root = new Node();
root.data = value;
return root;
}
ArrayList<Node> list = new ArrayList<Node>();
list.add(root);
getNode(list,value);
return root;
}
static void getNode(ArrayList<Node> list,int value){
ArrayList<Node> newList = new ArrayList<Node>();
for (int i=0;i<list.size();i++){
newList.add(list.get(i).left);
newList.add(list.get(i).right);
if(list.get(i).left == null){
list.get(i).left = new Node();
list.get(i).left.data = value;
return;
}
if(list.get(i).right == null){
list.get(i).right = new Node();
list.get(i).right.data = value;
return;
}
}
getNode(newList,value);
}
В двоичном дереве большие значения обычно «идут вправо» и меньше слева. Я не вижу, чтобы вы сравнивали ценности где угодно. Вы просто берете первый бесплатный листовой узел. Посмотрите здесь https://en.wikipedia.org/wiki/Binary_search_tree#Insertion для примера вставки. – wastl
ok да, что имеет смысл, я не знал, что я не использовал двоичные деревья до того, как я находился под впечатлением, что вам просто нужно было перемещаться слева направо, сверху вниз и вставлять «значение» в первый пустой узел. Это очень помогает – RyanD