【发布时间】:2014-05-25 14:59:29
【问题描述】:
我正在尝试编写一种方法来查找给定节点的父节点。这是我的方法。
我创建了一个 BinaryNode 对象 r,它最初是指 root。
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);
并且根不为空。
有人可以指出为什么会发生这种情况,以及我为了找到父节点而尝试做的事情是否在逻辑上是正确的。
【问题讨论】:
-
如何调用 find parent 方法?你提供了哪些论据?
-
@wastl: findParent 不是一个方法,它是一个 binaryNode 存储我们需要找到的父节点的节点
-
对不起,我的意思是 parent(BinaryNode) 方法
-
@wastl:如果我想找到位于root左边的节点的父节点,该方法可以称为`parent(root.left)`
-
您是否检查过 isRoot(findParent) 的计算结果是否为 true?
标签: java data-structures binary-tree parent