Easy
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.
Example 1:
Input: root = [1,2,3,4,5]
Output: 3
Explanation: 3 is the length of the path [4,2,1,3] or [5,2,1,3].
Example 2:
Input: root = [1,2]
Output: 1
Constraints:
[1, 104]
.-100 <= Node.val <= 100
# Definition for a binary tree node.
# class TreeNode
# attr_accessor :val, :left, :right
# def initialize(val = 0, left = nil, right = nil)
# @val = val
# @left = left
# @right = right
# end
# end
# @param {TreeNode} root
# @return {Integer}
def diameter_of_binary_tree(root)
@diameter = 0
diameter_of_binary_tree_util(root)
@diameter
end
private
def diameter_of_binary_tree_util(root)
return 0 if root.nil?
left_length = root.left ? 1 + diameter_of_binary_tree_util(root.left) : 0
right_length = root.right ? 1 + diameter_of_binary_tree_util(root.right) : 0
@diameter = [left_length + right_length, @diameter].max
[left_length, right_length].max
end