|
| 1 | +package com.fishercoder.solutions; |
| 2 | + |
| 3 | +import com.fishercoder.common.classes.TreeNode; |
| 4 | + |
| 5 | +/** |
| 6 | + * 1038. Binary Search Tree to Greater Sum Tree |
| 7 | + * |
| 8 | + * Given the root of a binary search tree with distinct values, |
| 9 | + * modify it so that every node has a new value equal to the sum of the values of the original tree that are greater than or equal to node.val. |
| 10 | + * As a reminder, a binary search tree is a tree that satisfies these constraints: |
| 11 | + * |
| 12 | + * The left subtree of a node contains only nodes with keys less than the node's key. |
| 13 | + * The right subtree of a node contains only nodes with keys greater than the node's key. |
| 14 | + * Both the left and right subtrees must also be binary search trees. |
| 15 | + * |
| 16 | + * |
| 17 | + * Example 1: |
| 18 | + * 4(30) |
| 19 | + * / \ |
| 20 | + * 1(36) 6(21) |
| 21 | + * / \ / \ |
| 22 | + * 0(36) 2(35) 5(26) 7(15) |
| 23 | + * \ \ |
| 24 | + * 3(33) 8(8) |
| 25 | + * |
| 26 | + * Input: [4,1,6,0,2,5,7,null,null,null,3,null,null,null,8] |
| 27 | + * Output: [30,36,21,36,35,26,15,null,null,null,33,null,null,null,8] |
| 28 | + * |
| 29 | + * |
| 30 | + * Note: |
| 31 | + * |
| 32 | + * The number of nodes in the tree is between 1 and 100. |
| 33 | + * Each node will have value between 0 and 100. |
| 34 | + * The given tree is a binary search tree.*/ |
| 35 | +public class _1038 { |
| 36 | + public static class Solution1 { |
| 37 | + /**credit: https://leetcode.com/problems/binary-search-tree-to-greater-sum-tree/discuss/286725/JavaC%2B%2BPython-Revered-Inorder-Traversal*/ |
| 38 | + int greaterSum = 0; |
| 39 | + public TreeNode bstToGst(TreeNode root) { |
| 40 | + if (root.right != null) { |
| 41 | + bstToGst(root.right); |
| 42 | + } |
| 43 | + greaterSum = root.val = greaterSum + root.val; |
| 44 | + if (root.left != null) { |
| 45 | + bstToGst(root.left); |
| 46 | + } |
| 47 | + return root; |
| 48 | + } |
| 49 | + } |
| 50 | +} |
0 commit comments