[leetcode]687. Longest Univalue Path

和求直径的那个题思路差不多,不过这个题要判断是不是相等。

public int longestUnivaluePath(TreeNode root) {
        int res = 0;
        if(root==null) return 0;
        if (root.left!=null&&root.left.val==root.val)
            res = 1+helper(root.left);
        if (root.right!=null&&root.right.val==root.val)
            res+=1+helper(root.right);
        return Math.max(res,Math.max(longestUnivaluePath(root.left),longestUnivaluePath(root.right)));
    }
    //用来判断相同数字深度
    public int helper(TreeNode root)
        {
            if (root==null) return 0;
            int cur = 0;
                if (root.left!=null&&root.val==root.left.val)
                    cur = 1+helper(root.left);
            if (root.right!=null&&root.val==root.right.val)
                cur = Math.max(cur,1+helper(root.right));
            return cur;
        }

 

posted @ 2018-02-01 09:28  stAr_1  阅读(187)  评论(0编辑  收藏  举报