原文:https://leetcode.com/problems/longest-univalue-path/description/
給定一個二叉樹,找到最長的路徑,這條路徑上的值都相同
第一感覺就是樹的深搜,從root開始依次判斷每一個父節點到底有幾個相同的子節點。
class Solution {
int res = 0;
public int longestUnivaluePath(TreeNode root) {
if(root ==null)
return res;
dfs(root);
return res;
}
public void dfs(TreeNode root){
if(root==null)return;
int temp = count(root.left,root.val)+count(root.right,root.val);
res = Math.max(res,temp);
dfs(root.left);
dfs(root.right);
}
public int count(TreeNode root,int val){
if(root == null || root.val!=val ) return 0;
int left = count(root.left,val) + 1;
int right = count(root.right,val) + 1;
return Math.max(left,right);
}
}
複製程式碼
這樣,每個節點有記錄了與他相同節點的個數。