Given a binary tree, you need to compute the length of the diameter of the tree.
The diameter of a binary tree is the length of the longest path between any two nodes in a tree.
This path may or may not pass through the root.
Example:
Given a binary tree
1 / 2 3 / 4 5
Return 3, which is the length of the path [4,2,1,3] or [5,2,1,3].
Note: The length of path between two nodes is represented by the number of edges between them.
路径未必经过root结点,
参考
1
2
34
5678
最长的跨度是第四层的结点之间,比如5和8的跨度是4,53248
经过观察可以发现,最大路径存在于,左子结点和右子结点之间。
比如上面第一个例子的34和35,
第二个例子根结点的右结点不存在
还有一种情况
1
2
3
单层的,叶结点和根结点距离最大
https://www.geeksforgeeks.org/diameter-of-a-binary-tree/
The diameter of a tree T is the largest of the following quantities:
* the diameter of T’s left subtree
* the diameter of T’s right subtree
* the longest path between leaves that goes through the root of T (this can be computed from the heights of the subtrees of T)
https://www.jianshu.com/p/6e3125b552f4
本题要求最长路径长,可以转化为求最长路径中的节点个数-1
最长路径包含以下三种情况:
1 根节点包含在最长路径中,则节点个数 = 左树高 + 右树高 + 1
2 最长路径在左子树中,则可以求左子树的最长路径的节点数目
3 最长路径在右子树中,则可以求右子树的最长路径的节点数目
对这三种情况进行比较,即可求出最长路径