MPS - Max Path Sum - נתיב של סכום מקסימלי
נותנים עץ בינארי - יש למצוא נתיב של סכום מקסימלי
- public static int MaxPathSum(BinaryTree tree) {
- int maxPath = Int32.MinValue;
- calculate(ref maxPath, tree);
- return maxPath;
- }
- private static int calculate(ref int maxPath, BinaryTree node) {
- if (node == null) return 0;
- int leftPath = Math.Max(calculate(ref maxPath, node.left), 0);
- int rightPath = Math.Max(calculate(ref maxPath, node.right), 0);
- maxPath = Math.Max(maxPath, leftPath + rightPath + node.value);
- return node.value + Math.Max(leftPath, rightPath);
- }