【问题标题】:Determinig all leafs nodes in a tree确定树中的所有叶节点
【发布时间】:2014-10-25 05:44:25
【问题描述】:

你们能帮我用这个方法吗? 我之前有退货,但也没有用

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;  
}

【问题讨论】:

  • 顺便说一句,这是什么语言?

标签: recursion data-structures binary-tree


【解决方案1】:

问题是您将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() != nullroot.getRight() != null,那么第一个赋值leaves += leafNodes(root.getLeft()) 使它等于左子树的叶子,然后leaves += leafNodes(root.getRight()) 将它与右子树的叶子连接起来。
猜你喜欢
  • 2020-06-10
  • 1970-01-01
  • 1970-01-01
  • 2015-10-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多