[LeetCode] 543. Diameter of Binary Tree
Posted aaronliu1991
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[LeetCode] 543. Diameter of Binary Tree相关的知识,希望对你有一定的参考价值。
二叉树的直径。题意是给一个二叉树,找二叉树里面的最大直径。最大直径的定义是任意两个node之间的最大距离。例子,
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].
注意这个最大距离很有可能不经过根节点,如下图例子,最大直径是从9到8,摘自LC中文网
思路是类似104题找二叉树最大深度用到的递归,但是稍微做一点改动。设置一个全局变量记录res这个最大长度,递归函数找的依然是最大深度但是res记录的是Math.max(res, left + right),即当前节点的左子树最大深度 + 右子树最大深度。
时间O(n)
空间O(n)
Java实现
1 class Solution { 2 int res = 0; 3 4 public int diameterOfBinaryTree(TreeNode root) { 5 helper(root); 6 return res; 7 } 8 9 private int helper(TreeNode root) { 10 if (root == null) { 11 return 0; 12 } 13 int left = helper(root.left); 14 int right = helper(root.right); 15 res = Math.max(res, left + right); 16 return Math.max(left, right) + 1; 17 } 18 }
1 /** 2 * @param {TreeNode} root 3 * @return {number} 4 */ 5 var diameterOfBinaryTree = function (root) { 6 let res = 0; 7 var helper = function (root) { 8 if (root == null) { 9 return 0; 10 } 11 let left = helper(root.left); 12 let right = helper(root.right); 13 res = Math.max(res, left + right); 14 return Math.max(left, right) + 1; 15 }; 16 helper(root); 17 return res; 18 };
以上是关于[LeetCode] 543. Diameter of Binary Tree的主要内容,如果未能解决你的问题,请参考以下文章
LeetCode 543. Diameter of Binary Tree 解题笔记
LeetCode 543. Diameter of Binary Tree 解题笔记
[leetcode-543-Diameter of Binary Tree]
Leetcode 543: Diameter of Binary Tree