二叉树的直径

题目:给定一棵二叉树,你需要计算它的直径长度。一棵二叉树的直径长度是任意两个结点路径长度中的最大值。这条路径可能穿过也可能不穿过根结点。

示例 :
给定二叉树

1
/ \
2 3
/ \
4 5
返回 3, 它的长度是路径 [4,2,1,3] 或者 [5,2,1,3]。

注意:两结点之间的路径长度是以它们之间边的数目表示。

思路:

代码:

 1 /**
 2  * Definition for a binary tree node.
 3  * function TreeNode(val, left, right) {
 4  *     this.val = (val===undefined ? 0 : val)
 5  *     this.left = (left===undefined ? null : left)
 6  *     this.right = (right===undefined ? null : right)
 7  * }
 8  */
 9 /**
10  * @param {TreeNode} root
11  * @return {number}
12  */
13 var diameterOfBinaryTree = function(root) {
14     let res = 0;
15     var helper = function (root) {
16         if (root == null) {
17             return 0;
18         }
19        let left = helper(root.left);
20         let right = helper(root.right);
21         res = Math.max(res, left + right);
22         return Math.max(left, right) + 1;
23      };
24     helper(root);
25     return res;
26 };

 

posted @ 2021-05-20 12:24  icyyyy  阅读(64)  评论(0)    收藏  举报