繁体   English   中英

如何使用对象的属性在二叉树中查找节点

[英]How to find a node in a binary tree using an attribute of the object

我有一个通用的二叉树。 我要做的是找到一个节点,提供一个属性以找到该节点然后返回它。 例如,我的树具有对象类型X,X具有属性代码,因此我必须将当前节点的代码与提供的代码进行比较。

private X find_X_by_code(Node<X> node, String code) {
    if (!node.element.code().equals(code)){
        if (node.left != null){
            find_X_by_code(node.left,code);
        }
        if (node.right != null){
            find_X_by_code(node.right,code);
        }
    }
    return node.element;
}

我这样称呼这个方法:

find_X_by_code(root,code);

由于某种原因,当代码匹配时,它会继续进行。

您可能需要根据自己的使用进行一些调整。

if(node != null){
    if(node.element.code().equals(code)){
       return node.element;
    } else {
        Node tempNode = find_X_by_code(node.left, code);
        if(tempNode == null) {
            tempNode = find_X_by_code(node.right, code);
        }
        return tempNode.element;
     }
} else {
    return null;
}

如何在树中搜索节点并将其返回?

您缺少递归调用中的返回值以及该节点不存在(到达null)的情况的句柄。 更改为:

private X find_X_by_code(Node<X> node, String code) {
    if (node == null) { return null; }
    if (!node.element.code().equals(code)){
        if (node.left != null){
            return find_X_by_code(node.left,code);
        }
        if (node.right != null){
            return find_X_by_code(node.right,code);
        }
    }
    return node.element;

}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM