
Problem
Solution
Initial thoughts
Python implementation
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 implementation
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; } }
|
Time complexity
O(N).
Space complexity
O(N).
Links
543. Diameter of Binary Tree
(中文版) 算法笔记: 力扣#543 二叉树的直径
近期评论