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.
This is my code but i don't get complete search.
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 contains :
ArrayList mChildren ;
(it's children)
and data object.
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;
}
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;
}
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.