0543 Diameter of Binary Tree
Solved at: 2023-01-29 Diameter of Binary Tree
Question
Given the root
of a binary tree, return 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
.
The length of a path between two nodes is represented by the number of edges between them.
Solution
class Solution {
func getHeight(_ root: TreeNode?) -> Int {
guard root != nil else { return 0 }
return max(getHeight(root!.left), getHeight(root!.right)) + 1
}
func diameterOfBinaryTree(_ root: TreeNode?) -> Int {
guard root != nil else { return 0 }
return getHeight(root!.left) + getHeight(root!.right)
}
}
Improved
class Solution {
func getHeight(_ root: TreeNode?) -> Int {
guard root != nil else { return 0 }
return max(getHeight(root!.left), getHeight(root!.right)) + 1
}
func diameterOfBinaryTree(_ root: TreeNode?) -> Int {
guard root != nil else { return 0 }
let this = getHeight(root!.left) + getHeight(root!.right)
let left = diameterOfBinaryTree(root!.left)
let right = diameterOfBinaryTree(root!.right)
return max(this, left, right)
}
}
Results
- Runtime 118 ms, Beats 9.43%
- Memory 14.6 MB, Beats 68.40%
Complexity Analysis
Time: Space: