在二叉树中查找给定键的父级

时间:2016-01-09 10:43:33

标签: java tree binary-tree

我试图在二叉树(而不是BST)中找到给定键的父级。此代码始终返回null,有人可以告诉问题在哪里吗?我认为问题是即使我返回父,它仍将返回null。 谢谢:))

public Node getParent(int key,Node parent, Node r){
    if(r!=null){
        if(r.iData==key)
            return parent;
        getParent(key, r, r.leftChild);
        getParent(key, r, r.rightChild);
    }
        return null;
}

1 个答案:

答案 0 :(得分:2)

您正在递归左右子树,但是当这些调用找到匹配时,您只需忽略它。而是做像

这样的事情
public Node getParent(int key, Node parent, Node r) {
    if (r!=null) {
        if (r.iData == key)
            return parent;
        Node p;
        p = getParent(key, r, r.leftChild);
        if (p != null)
            return p;
        p = getParent(key, r, r.rightChild);
        if (p != null)
            return p;
    }
    return null;
}