Recursive search for a node in non-binary tree

前端 未结 2 899
死守一世寂寞
死守一世寂寞 2020-12-29 10:59

I want to search for an item in non-binary tree (any node can have n - children) and exit from recursion immediately. The node in question can be any node, not only leafs.

相关标签:
2条回答
  • 2020-12-29 11:46

    You shouldn't exit after exploring the first child. You don't need the if statement in front of the for loop.

    private nNode recursiveSearch(data gi,nNode node){
        if (node.getdata()==gi)
            return node;
        nNode[] children = node.getChildren(); 
        nNode res = null;
        for (int i = 0; res == null && i < children.length; i++) {         
            res = recursiveSearch(gi, children[i]);
        }
        return res;
     }
    
    0 讨论(0)
  • 2020-12-29 11:55

    In your code if recursiveSearch(gi, children[i]) returned null then i+1 not searched, modify:

    private nNode recursiveSearch(data gi,nNode node){
            if (node.getdata()==gi)
                return node;
            nNode[] children = node.getChildren(); 
            nNode temp;
            if (children.length>0)
            for (int i = 0; i < children.length; i++) {         
                temp = recursiveSearch(gi, children[i]);
                if(temp!=null)
                    return temp;
            }
            return null;
     }
    
    0 讨论(0)
提交回复
热议问题