编程语言
首页 > 编程语言> > 如何在Java中的嵌套数据结构中计算叶节点?

如何在Java中的嵌套数据结构中计算叶节点?

作者:互联网

我有一个称为Box对象的结构.

Box--+---Box----Box
     |
     +---Box-+--Box
             |
             +--Box
             |
             +--Box

我正在尝试向顶部框对象询问叶节点框的列表,在这种情况下为3个框对象.

框对象在名为Vector的Vector类型的实例变量中具有其子级列表.

孩子的数量可以是无限的.

我一直在尝试编写单个递归方法来执行此操作,但是没有成功.

解决方法:

一种实现方法是对结构进行递归遍历.这个想法如下:

>空树中没有叶节点.
>在根为r且没有子代的树中,r是唯一的叶子.
>在根为r的树中,如果r有子代,则树的叶子就是那些子代的叶子.

您可以使用这种伪代码编写递归遍历:

void findChildren (Box current, List<Box> found) {
    /* Case 1. */
    if (current == null) return;

    /* Case 2. */
    if (current.children.isEmpty()) {
        found.add(current);
        return;
    }

    /* Case 3. */
    for (Box child: current.children)
        findChildren(child, found);
}

希望这可以帮助!

标签:data-structures,nodes,java,algorithm
来源: https://codeday.me/bug/20191208/2093761.html