簡體   English   中英

Java遞歸方法始終返回null

[英]Java recursive method always returns null

我有一個二叉搜索樹,我想獲得具有特定值的子樹,如下所示:

private Node getNode(Node root,Object c){

        String data = String.valueOf(c);
        if(root !=  null) {
            getNode(root.left,c);
            if(root.data.equals(data)){
                System.out.println("found!!");
                 return root;
              }
            getNode(root.right,c);
          }
        return null;
    }

System.out.println(getNode(root,c));

輸出:

“找到了!”

空值

但它總是返回一個空值。 我想知道為什么以及如何解決此問題。謝謝!

您沒有評估getNode(root.left, c)getNode(root.right, c)返回的結果。

正確的是:

private Node getNode(Node root, Object c) {
    String datac = String.valueOf(c);
    if(root == null) return null;
    if(Objects.equals(datac, root.data)) return root;
    Node tmp;
    return ((tmp = getNode(root.left, c)) != null) ? tmp : getNode(root.right, c);
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM