Recursion 确定树中的所有叶节点
你们能帮我用这个方法吗? 我以前用过它,但它也不起作用Recursion 确定树中的所有叶节点,recursion,data-structures,binary-tree,Recursion,Data Structures,Binary Tree,你们能帮我用这个方法吗? 我以前用过它,但它也不起作用 private String leafNodes(TreeNode root, String leafs){ if (root.isLeaf()) { leafs += Integer.toString(root.getData()); } else { if(root.getLeft() != null) { leafs += leafNodes(roo
private String leafNodes(TreeNode root, String leafs){
if (root.isLeaf()) {
leafs += Integer.toString(root.getData());
}
else {
if(root.getLeft() != null) {
leafs += leafNodes(root.getLeft(), leafs);
}
if (root.getRight() != null) {
leafs += leafNodes(root.getRight(), leafs);
}
return leafs;
}
return leafs;
}
问题是您将
leafs
传递给子级,然后将结果添加到当前字符串中,以便同一个叶可以在返回的字符串中出现多次。您可以通过以下方式进行修复:
private String leafNodes(TreeNode root){
String leaves = "";
if (root.isLeaf()) {
leaves = Integer.toString(root.getData());
}
else {
if(root.getLeft() != null) {
leaves += leafNodes(root.getLeft());
}
if (root.getRight() != null) {
leaves += leafNodes(root.getRight());
}
}
return leaves;
}
@sp2danny它并不总是“”。如果
root.getLeft()!=null
和root.getRight()!=null
,然后第一个赋值leaves+=leafNodes(root.getLeft())
使其等于左子树的叶子,然后leaves+=leafNodes(root.getRight())
将其与右子树的叶子连接起来。顺便问一下,这是什么语言?