Java 非二叉树中节点的递归搜索

Java 非二叉树中节点的递归搜索,java,search,tree,Java,Search,Tree,我想在非二叉树中搜索一个项(任何节点都可以有n个子节点),并立即退出递归。所讨论的节点可以是任何节点,而不仅仅是叶子 这是我的代码,但我没有得到完整的搜索 private nNode recursiveSearch(data gi,nNode node){ if (node.getdata()==gi) return node; nNode[] children = node.getChildren(); if (chil

我想在非二叉树中搜索一个项(任何节点都可以有n个子节点),并立即退出递归。所讨论的节点可以是任何节点,而不仅仅是叶子

这是我的代码,但我没有得到完整的搜索

private nNode recursiveSearch(data gi,nNode node){
        if (node.getdata()==gi)
            return node;
        nNode[] children = node.getChildren(); 
        if (children.length>0)
        for (int i = 0; i < children.length; i++) {         
            return recursiveSearch(gi, children[i]);
        }
        return null;
 }
private nNode recursiveSearch(数据gi,nNode节点){
if(node.getdata()==gi)
返回节点;
nNode[]children=node.getChildren();
如果(子项长度>0)
对于(int i=0;i
nNode包含:

arraylistmchildren(它是孩子)

和数据对象。

在探索第一个子对象后,不应退出。在for
循环的
前面不需要
if
语句

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;
 }
private nNode recursiveSearch(数据gi,nNode节点){
if(node.getdata()==gi)
返回节点;
nNode[]children=node.getChildren();
nNode res=null;
对于(inti=0;res==null&&i
在您的代码中,如果recursiveSearch(gi,children[i])返回null,则i+1未搜索,请修改:

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;
 }
private nNode recursiveSearch(数据gi,nNode节点){
if(node.getdata()==gi)
返回节点;
nNode[]children=node.getChildren();
nNode温度;
如果(子项长度>0)
对于(int i=0;i
你的
nNode
长什么样?