微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

没有至少两片叶子的树的直径是多少?

如何解决没有至少两片叶子的树的直径是多少?

一棵树的直径 T 是下列量中最大的一个

  1. T 的左子树的直径
  2. T 的右子树的直径
  3. 叶子之间穿过T根的最长路径(这可以 从 T) 的子树的高度计算

来源:https://www2.cs.duke.edu/courses/spring00/cps100/assign/trees/diameter.html

但是,它没有说明没有至少两片叶子的树的直径是多少,例如只有根的树,或者 1 -> 2?是 0、未定义、无穷大还是负无穷大?

解决方法

直径的更好定义就是“最长路径的长度”。仅根树的直径为 0,两个顶点上的路径的直径为 1。给出的规则“不必要地”复杂,但那是因为它们也提供了一种计算直径的方法。另外,请注意,在图论意义上,如果根丢失了所有或除其子项之外的所有项,则它 本身就是一片叶子,因此您可以看到第三个子句实际上覆盖了问题案例。

,

根据给定的定义,对于树中有一个节点或两个节点的情况,它都必须为 0。对于 n 节点树,路径的长度为 0 到 n-1。无穷大或负无穷大以及未定义的直径没有逻辑意义,第三个定义总是给出数字答案。也许需要一个更好的定义,但它确实取决于任务,为什么要首先定义直径。显然,这是一个递归定义,因此无论如何它都需要一个基本情况。左子树或右子树最终将是 1 或 2 节点树。但从逻辑上讲,在那里构建的定义似乎不精确,而且不是特别有用,除了具有奇数节点且其节点仅包含两个叶子的适当平衡的二叉树。

广义二叉树或树的直径甚至一般都需要更好的定义。对于广义二叉树,解决此问题的最简单方法是将路径长度定义为两片叶子之间,或者如果没有两片叶子,则从根到其叶子,例如1. 否则递归构造会中断。同样,一般的树可以简单地使它成为所有子级的最大直径,而不仅仅是左侧和右侧的。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。