LeetCode:543. Diameter of Binary Tree(找出二叉樹中最大的半徑)
阿新 • • 發佈:2018-12-10
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
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.
方法1:(這是一個深度優先的演算法)
/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */ class Solution { int maxDiameter= 1; public int diameterOfBinaryTree(TreeNode root) { depth(root); // 兩次都算了頂點,要進行減1操作 return maxDiameter- 1; } public int depth(TreeNode node) { if (node == null) return 0; // 遍歷左右子樹的最大高度 int L = depth(node.left); int R = depth(node.right); // 不斷去更新maxDiameter的值,使他最大化 maxDiameter= Math.max(maxDiameter, L+R+1); return Math.max(L, R) + 1; } }
時間複雜度:O(n^2)
空間複雜度:O(n)