当前位置: 首页 > 知识库问答 >
问题:

用递归方法收集二叉树中叶节点的值

商勇
2023-03-14

我必须使用递归帮助方法来解决这个问题,而我完全是空白的

这是我目前所掌握的

public void leafNodes(Node<T> n)
{
    if(n.left != null) leafNodes(n.left);
    if(n.right != null) leafNodes(n.right);

    if(n.left == null && n.right == null)
    {
        // Do something in here?
    }
}

尝试在建议后编辑:

I tried adding it like this:

public ArrayList<String> leafNodes(Node<T> n)
{
    ArrayList<String> list = new ArrayList<>();

    if(n.left != null) leafNoder(n.left);
    if(n.right != null) leafNoder(n.right);

    if(n.left == null && n.roight == null)
    {
        list.add(n.value.toString());
    }
    return list;
}
   public String LeafNodeValues()
{
    StringJoiner sj = new StringJoiner(", ", "[","]");

    if(empty()) return sj.toString();

    ArrayList<String> a = leafNodes(rot);

    for(int i = 0; i < a.size(); i++)
    {
        sj.add(a.get(i));
    }
    return sj.toString();
}
public ArrayList<String> leafNodes(Node<T> n)
{
ArrayList<String> list = new ArrayList<>();

if(n.left != null) list.addAll(leafNoder(n.left));
if(n.right != null) list.addAll(leafNoder(n.right));

if(n.left == null && n.roight == null)
{
    list.add(n.value.toString());
}
return list;

共有1个答案

梁建德
2023-03-14

LeafNodes方法可以返回ArrayList 以空列表开头,添加All LeafNodes(n.left),添加All LeafNodes(n.right),如果n是leaf,则将n添加到列表中。最后,您返回列表。

要获得所需的结果,您可以在根节点上调用leafNodes,并使用:

String.join(",", leafNodes(root));

在你的二叉树中,每个节点都有0个子(一个叶子)、1个子或2个子。

List.AddAll(leafNodes(n.left));

List.AddAll(leafNoder(左));

返回列表

1
 2
  4
  5
 3
  6
calling leafNodes(1)
 calling leafNodes(2)
  calling leafNodes(4)
   4 is a leaf
   returning [4] for 4
  calling leafNodes(5)
   5 is a leaf
   returning [5] for 5
  returning [4, 5] for 2
 calling leafNodes(3)
  calling leafNodes(6)
   6 is a leaf
   returning [6] for 6
  returning [6] for 3
 returning [4, 5, 6] for 1
 类似资料:
  • 好的,我必须创建一个递归方法来计算树中的节点,我做到了(变量名是葡萄牙语的,对不起): arvbin是二叉树,esq和dir是对树分支的左右引用。 我以为这会奏效,但由于某种原因,当我尝试运行它时,它返回0。我使用了一些调试,我认为问题在于,当方法完成并返回到原始的非递归方法时,cardinalidade变量被设置为0。我不确定这是否是因为自动装箱会弄乱我的整数并将其转换为int,然后当我调用该方

  • 问题查找具有n个节点的完整二叉树中的叶节点数。 我为上述问题编写了一个递归程序,每当我到达一个没有子节点的节点时,遍历树并增加叶节点的数量。但由于这棵树是一棵完整的二叉树,我认为这会使问题变得更容易,但我不知道如何解决。它是否可以简化为紧凑形式(类似于公式)。

  • 问题内容: 我想在非二叉树中搜索一个项目(任何节点都可以有n个孩子)并立即退出递归。所讨论的节点可以是任何节点,而不仅仅是叶子。 这是我的代码,但我没有完整的搜索。 nNode包含: (是孩子) 和数据对象。 问题答案: 探索第一个孩子后,您不应该退出。您不需要循环前面的语句。

  • 本文向大家介绍C++使用递归和非递归算法实现的二叉树叶子节点个数计算方法,包括了C++使用递归和非递归算法实现的二叉树叶子节点个数计算方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了C++使用递归和非递归算法实现的二叉树叶子节点个数计算方法。分享给大家供大家参考,具体如下: 希望本文所述对大家C++程序设计有所帮助。

  • 我坚持使用递归函数来查找二叉树中节点的深度,更具体地说,是在else条件中: 如果树是二叉搜索树,知道左子值总是低于父值,右子值总是高于父值,我可以添加一个If条件,这样如果节点x值低于根,我总是返回根- 当查看函数时,假设节点总是存在的,节点x永远不是根,并且在开始时传递的深度总是0。 如果树是二叉搜索:

  • 我需要创建一个递归方法,将二叉查找树的根节点作为参数。这个递归方法将返回整个二叉查找树中内部节点总数的int值。 这就是我到目前为止所拥有的: 有没有更好的办法?我还坚持寻找迭代解。