#30daychallege (11) | Diameter of Binary Tree
Given a binary tree, you need to compute 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.
Example:
Given a binary tree
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].
Note: The length of path between two nodes is represented by the number of edges between them.
Khi quan sát, ta thấy tất cả các path đều có chung 1 đặc điểm là nó bắt đầu từ một nút nào đó, và chỉ đi xuống các nút con. Nếu ta biết mỗi node có chiều dài là L và R. Thì diameter của cây nhị phân sẽ là: L+R+1. Đường dài nhất là đường đi từ L sang Node gốc và đi qua R.
Thế độ xâu của một Node nào đó được tính thế nào ? Gọi maxDepth(Node) là hàm tính độ sâu, thì :
maxDepth(node) = max(maxDepth(Node.left),maxDepth(Node.right)) + 1.Cộng 1 ở đây chính là cộng thêm node gốc.
Đấy là bài toán con, còn bài toán chính thì thế nào, ta đã có độ xâu lớn nhất của mỗi node, trên mỗi lần DFS, ta chỉ cần so sánh max(max, maxDepth(left)+maxDepth(right)+1).
Ở đây, kết quả lại là max - 1 bởi vì nếu sau khi right+left +1 thì ta sẽ có 1 nốt gốc bị trùng.
Cảm ơn bạn.
Nhận xét
Đăng nhận xét