【问题标题】:How to identify a leaf of a tree?如何识别树的叶子?
【发布时间】:2018-07-24 10:48:46
【问题描述】:

假设我有一棵树,有 N 个顶点和 N - 1 条边。树是用下面给出的数据构建的。它包含一对整数,表示由边连接的顶点。树总是以 1 为根。

示例:

1 2

3 1

       3
      /
     1
   /  
  2 

考虑到树的根为 1,此示例中的叶节点是什么?这甚至是有效的树形成吗?

【问题讨论】:

  • 关于术语的说明:在讨论树时,我们通常使用术语“节点”而不是“顶点”。
  • 注明。谢谢! :)

标签: data-structures graph tree


【解决方案1】:

如果 1 是根,我会说 2 和 3 是叶子,但我宁愿这样画:

  1
 / \
2   3

或者反过来:

2   3
 \ /
  1

【讨论】:

    【解决方案2】:

    叶子是树中没有子节点的节点。现在回到你的问题:

    这甚至是有效的树形吗?

    是的,它是一棵有效的树。

    按照上面的定义:示例中的叶子节点(树根为1):

           3
          /
         1
       /  
      2
    

    叶节点是:2 和 3(因为 2 和 3 没有子节点)。

    检查叶节点的简单程序:

    boolean isLeaf(Node node)
    {
        if(node == null)       
            return false;
        return node.left == null && node.right == null;      
    }
    

    【讨论】:

    • 很明显,3's 左边是 1。所以你的代码会说 3 不是叶子。
    • @AndrewScott 请阅读描述,它说树的根是 1,不要按结构走。所以根据它,3 是 1 的孩子,所以 3 的左孩子永远不会是 1或者我们可以说 1 永远不能是 3 的孩子 :-)
    猜你喜欢
    • 2014-12-11
    • 1970-01-01
    • 2021-09-03
    • 2014-05-10
    • 2013-01-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多