参考 https://www.hackerrank.com/challenges/binary-search-tree-insertion/problem
问题是我已经通过了除测试用例#5之外的所有测试用例
我的代码是:
class Node {
int data;
Node left;
Node right;
}
static Node Insert(Node root,int value) {
// Level order traversal
Queue<Node> q = new LinkedList<Node>();
Node newnode = new Node();
newnode.data=value;
if(root!=null)
q.offer(root);
while(!q.isEmpty()) {
Node tmp = q.poll();
if(tmp.data >= value) {
if(tmp.left!=null)
q.offer(tmp.left);
else {
tmp.left = newnode;
break;
}
} else {
if(tmp.right!=null)
q.offer(tmp.right);
else { tmp.right = newnode; break;}
}
}
return root;
}
答案 0 :(得分:0)
我能看到的一个错误就是代码的这一部分 -
if(tmp.data >= value) {
if(tmp.left != null)
q.offer(tmp.left);
else {
tmp.left = newnode;
break;
}
}
在这里看,即使要输入的值等于根,您仍然会将其插入左子树。
你认为这不是一个错误吗?
这是我能找到的。
希望这有帮助!