当前位置: 首页 > 面试题库 >

帮助树递归

冯星阑
2023-03-14
问题内容

我有一个Person类,我想创建一棵树。这是Person类的解释器。

public Person(String name, int age, char gender, Person c1, Person c2)

c1是左边的孩子,c2是右边的孩子。所以说我创建了三个这样的人:

Person c = new Person("Carl", 50, 'M', null, f);

Person b = new Person("Barbara", 52, 'F', d, e);

Person a = new Person("Adam", 75, 'M', b, c);

因此,在这里您说亚当是根节点,亚当的左孩子是b,这是芭芭拉,他的右c是卡尔,依此类推。

所以我想做的是编写一个count方法,该方法计算包括在内的子代数this。因此a.count()将返回6(如果Person f没有任何孩子)。

这是我的代码

public int count() // total person count including this object
{
    if(child1==null)
        return 0; //I tried return 1 for this too didnt work
    if (child2==null)
        return 0; //also tried 1 for this
    return 1+this.child1.count() +1+this.child2.count();
}

我在纸上运行了好几次,它应该得出正确的结果,但是由于我实际运行它时,由于某种原因,它有一些偏离。


问题答案:

0如果其中一个子代为,则返回代码null。这是不正确的,因为您没有考虑另一个孩子或this。该计数应始终是>= 1因为树中始终至少有一个节点。

另外,如果您看到一个孩子是,您将无法立即返回null。您还需要计算另一个孩子(如果存在)。

这是我将如何实施:

public int count() // total person count including this object
{
    int count = 1; // we count this node as 1 
    if (child1 != null) // if we have a left child, count its size
        count += child1.count();
    if (child2 != null) // if we have a right child, count its size
        count += child2.count()
    return count;
}

您需要考虑两个孩子,即使其中一个是null



 类似资料:
  • 问题描述: 鲍里斯特教授研究树木。他记录了所有他喜欢的树的前序、序和后序遍历。然而,他办公室的一场火灾摧毁了他存放有序遍历的文件柜。他仍然拥有他最喜欢的所有树的前序和后序遍历,这些信息足以重建丢失的按序遍历吗? 您必须为以下任务设计和实现一个程序:输入将由两个数字列表组成。第一个列表是一些树T的前序遍历。第二个列表是同一棵树T的后序遍历。输出应该是T的无序遍历。如果输入没有确定唯一的树,那么任何一

  • 问题内容: 这是情况。我有两个表: 用户(网站的注册用户), 消息(彼此之间发送的个人消息) 消息表具有以下列(仅是重要的列): ID, 发件人(发送消息的用户的ID), 发送消息的用户的接收者ID), reply_to(此消息要回复到的消息的ID,可以为NULL) 我需要做的是构造一个SELECT查询,该查询将选择2个用户之间的完整对话。即,如果用户A回复了从用户B发送的消息,而用户B回复了该消

  • 记住命令,特别是命令的用法挺难,不同的命令都有各自的可以使用的参数。一般的命令都支持 --help 参数,它会为你显示命令的帮助信息,比如可用的参数,参数的作用等等。或者也可以使用 man 命令查看命令的帮助手册。 查看帮助,例如看一下 curl 命令的帮助信息: curl --help 返回信息截取: Usage: curl [options...] <url> Options: (H) me

  • Object: JSON JSON解码器和编码器。 JSON Method: encode 转换一个对象或数组为JSON字符串。 语法: var myJSON = JSON.encode(obj); 参数: obj - (object) 转换为字符串的对象。 返回: (string) JSON字符串。 示例: var fruitsJSON = JSON.encode({apple: 'red',

  • 我在一个JPanel中有3个组件,其中GridBagLayout是JPanel的LayoutManager,并在这3个组件上使用GridBagConstraints。 使用当前代码(如下所示),3个元素会正确地出现在面板上。问题是第一个组件是一个JLabel,它有时很长,如果是这样的话,它就会扩展,使其他两个组件变小。 我的目标是拥有一个GridBagLayout为1行4列的JPanel,其中第一

  • 帮助教程 帮助文档        LSV帮助文档详细介绍里产品的使用及操作,极大的方便了用户对的LSV的使用。 点击链接了解详情 视频教程        业内资深人士录制了相关教学视频,不仅对软件进行了介绍,也对行业的相关概念和知识点进行了深入的分析和解释,欢迎大家观看! 点击链接了解详情 博客        LSV的博客里有一系列的关于LSV的FAQ以及一些问题的解决方案,并且可以进行关键词的搜