我将节点插入BST的代码无效。当我尝试显示它时,它只显示树的最后两个节点,即它以某种方式覆盖树中的节点。我做错了什么?提前谢谢!
public Node Insert(int value)
{
Node newNode = new Node();
newNode.data = value;
newNode.left = null;
newNode.right = null;
if(root == null){
root = newNode;
return root;
}
else{
while(root != null){
if(root.data < value){
if(root.right != null){
root = root.right;
}
else{
root.right = newNode;
break;
}
}
else{
if(root.left != null){
root = root.left;
}
else{
root.left = newNode;
break;
}
}
}
return root;
}
}
public void inOrder(){
inOrder(this.root);
}
private void inOrder(Node root){
if(root != null){
inOrder(root.left);
System.out.println(root.data);
inOrder(root.right);
}
}
答案 0 :(得分:0)
root指向树的顶部节点。在你改变其价值的同时。您必须使用anoter变量(例如&#39; n&#39;)。
&#39; n&#39;的初始值是&#39; root&#39;。 在这段时间内你只使用&#39; n&#39;。
if(root == null){
root = newNode;
return root;
}
else{
Node n = root;
while(n != null){
...
}
return root;
...
您必须返回&#39; root&#39;而不是&#39; n&#39;,因为root不会改变。
答案 1 :(得分:0)
在代码中查看我的评论。希望它有所帮助。
parent(a,b).
parent(c,d).
parent(e,f).
answer :-
open('output.txt',write, Stream),
( write(Stream,parent(a,b)),fail %%%%%% how to ?
;true
),
close(Stream).