
问题描述
解法
分析
Python 实现
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
|
class : def diameterOfBinaryTree(self, root): """ :type root: TreeNode :rtype: int """ def dfs(node): if node is None: return 0 left = dfs(node.left) right = dfs(node.right) self.ans = max(self.ans, left+right+1) return max(left, right)+1 self.ans = 1 dfs(root) return self.ans-1
|
Java 实现
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
|
* Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */ class { private int ans = 1; private int dfs(TreeNode node){ if(node==null){ return 0; } int left = dfs(node.left); int right = dfs(node.right); int temp = left + right + 1; ans = temp > ans ? temp : ans; int depth = left > right ? left : right; return depth + 1; } public int diameterOfBinaryTree(TreeNode root) { dfs(root); return ans-1; } }
|
时间复杂度
O(N).
空间复杂度
O(N).
链接
543. Diameter of Binary Tree
543. 二叉树的直径
(English version) Algorithm Notes: Leetcode#543 Diameter of Binary Tree
近期评论