package leetCode; /** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */ public class LeetCode_687_13 { private int pathInt; public int longestUnivaluePath(TreeNode root) { pathInt = 0; _pathLength(root); return pathInt; } public int _pathLength(TreeNode node) { if (node == null) return 0; int left = _pathLength(node.left); int right = _pathLength(node.right); int pathLeft = 0, pathRight = 0; if (node.left != null && node.left.val == node.val) { pathLeft += left + 1; } if (node.right != null && node.right.val == node.val) { pathRight += right + 1; } pathInt = Math.max(pathInt, pathLeft + pathRight); return Math.max(pathLeft, pathRight); } public class TreeNode { int val; TreeNode left; TreeNode right; TreeNode(int x) { val = x; } } }