543. Diameter of Binary Tree

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 最长路径在右子树中,则可以求右子树的最长路径的节点数目

对这三种情况进行比较,即可求出最长路径

 

 

 

 

 

posted @ 2019-06-19 18:50  ChuckLu  阅读(306)  评论(0编辑  收藏  举报