【问题标题】:How to find the longest path that connects two leaves in a binary tree?如何找到连接二叉树中两个叶子的最长路径?
【发布时间】:2018-11-26 15:49:15
【问题描述】:

如何找到通过二叉树的根连接两片叶子的最长路径的长度?

  • 该函数必须是递归的,并且它必须返回 最长的路径。
  • 我只需要伪代码

我刚刚读到我正在寻找的东西叫做树的直径

【问题讨论】:

  • 你的意思是“唯一的路径”,因为它是一棵树?或者,既然你想通过根,你的“路径”可以回溯到自身吗?
  • 他想找到最远的两片叶子。
  • @MarekR 很好理解。就是树的左边的高度+树的右边的高度之和但是我不知道怎么递归写

标签: algorithm binary-tree graph-algorithm


【解决方案1】:

请注意,二叉树的直径不一定等于通过根的最长路径的长度。考虑一个完整的二叉树,它通过在根上添加一个额外的节点来修改 - 那么最佳路径根本不会通过根。

如果一定要经过根,那么最长的路径就是到达左右子树最深节点的路径。所以考虑编写一个辅助函数来查找子树中最深的节点,看看是否可以以此为起点。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-01-26
    • 1970-01-01
    • 2021-02-13
    • 2014-05-10
    • 2016-08-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多