Ejemplo n.º 1
0
        //solution is versy similar to diameter of a tree
        // there it is +1 here it is +root.value;
        public static int GetMaxPathSum(Node root)
        {
            MaxPath path = new MaxPath();

            path.val = Int32.MinValue;
            GetMaxPathSumHelper(root, path);
            return(path.val);
        }
Ejemplo n.º 2
0
        public static int GetMaxPathSumHelper(Node root, MaxPath path)
        {
            if (root == null)
            {
                return(0);
            }

            // to support case [2,-1] need to take Max(0,func)
            var left  = Math.Max(0, GetMaxPathSumHelper(root.Left, path));
            var right = Math.Max(0, GetMaxPathSumHelper(root.Right, path));

            var currMax = left + right + root.Data;

            path.val = Math.Max(currMax, path.val);

            return(Math.Max(left, right) + root.Data);
        }