Longest Univalue Path

weixin_34148340發表於2018-03-27

原文: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);                 
    }
    
}
複製程式碼

這樣,每個節點有記錄了與他相同節點的個數。



相關文章