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())
将其与右子树的叶子连接起来。顺便问一下,这是什么语言?