我有一个findNode方法,可在treenode中找到目标字符串。我遇到的问题是,我的递归方法似乎只沿树的一个分支下降,而没有像我认为的那样覆盖孔树。如果您需要更多代码,请询问。

public GeneralTreeNode findNode(String targetName) {
  // name is the current name of the node
  if(targetName.equals(this.name)) return this;
  // children is a HashSet of all the nodes children
  for(GeneralTreeNode child : children) return child.findNode(targetName);

  // no node containing the string could be found
  return null;
}

最佳答案

您正在循环中返回,因此为什么会停止。并非总是返回,只有找到了东西才返回。

for(GeneralTreeNode child : children) {
   GeneralTreeNode result = child.findNode(targetName);
   if (result != null) {
        return result;
   }

}

关于java - 递归方法不遍历所有树节点,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26033586/

10-09 04:53