我正在尝试编写一个查找给定节点的父节点的方法。以下是我的方法。
我创建了一个名为r的BinaryNode
对象,最初指向根节点。
public BinaryNode r=root;
public BinaryNode parent(BinaryNode p){
BinaryNode findParent=p;
if (isRoot(findParent) || r==null){
return null;
}
else{
if(r.left==findParent || r.right==findParent)
return r;
else{
if (r.element<findParent.element)
return parent(r.right);
else
return parent(r.left);
}
}
}
这段代码无法正常工作。我认为这是因为r是一个空对象。因为当我执行
if (isRoot(findParent) || r==null){
System.out.println(r==null);
return null;}
r==null
的结果是 true
。这是为什么呢?因为我已经插入了节点。
public static void main (String args[]){
BinaryTree t=new BinaryTree();
t.insert(5);
t.insert(t.root,4);
t.insert(t.root,6);
t.insert(t.root,60);
t.insert(t.root,25);
t.insert(t.root,10);
并且根节点不为空。
请问有人能指出为什么会发生这种情况,以及我尝试查找父节点的逻辑是否正确。
parent(root.left)
。 - sam_roxparent(root.left)
方法,isRoot() 的评估结果为 false,这是正确的,因为它不是根节点。 - sam_rox