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

我想在非二叉树中搜索一个项目(任何节点都可以有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; } 

nNode包含:

ArrayList mChildren ; (这是孩子们)
和数据对象。

探索第一个孩子后你不应该退出。 你不需要在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; } 

在你的代码中,如果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; }