我看到了很多关于树以及如何递归搜索它们的例子,但不像我的情况。所以我决定问问。
如何找到从任何叶子到根的路径?
我的问题是每个父节点有很多子节点。这是我的代码示例:
private LinkedList<TreeNode> findPath(LinkedList<TreeNode> path, TreeNode root, TreeNode leaf){
if(root == null || root.name==null) return null;
path.add(root);
if(root.name.equals(leaf.name))
return path;
//Check if the leaf that we are looking for is one of the root children
if(root.children==null) return null;
for(TreeNode children : root.children){
if(children.name.equals(leaf.name)){
path.add(children);
return path;
}
}
//Search in all the childrens of the root recursively
for(TreeNode children : root.children){
LinkedList<TreeNode> result = findPath(path, children, leaf);
if(result != null)
return result;
}
//The leaf is not found.
return null;
}
问题是每次当我检查一个孩子时,如果我没有找到我的叶子,我会收回但我已经在路径中添加了子节点并且我的路径变得非常大。