2
public TreeNode convertBST(TreeNode root) {5
List<Integer> nodesValues = new ArrayList<>();6
helperNodesVales(root, nodesValues);7
traverseAndAdd(root, nodesValues);14
private void helperNodesVales(TreeNode root, List<Integer> nodesValues) {16
nodesValues.add(root.val);18
if (root.right != null) {19
helperNodesVales(root.right, nodesValues);21
if (root.left != null) {22
helperNodesVales(root.left, nodesValues);29
private void traverseAndAdd(TreeNode root, List<Integer> nodesValues) {31
int rootVal = root.val;32
for (int i = 0; i < nodesValues.size(); i++) {33
if (nodesValues.get(i) > rootVal) root.val += nodesValues.get(i);36
if (root.right != null) {37
traverseAndAdd(root.right, nodesValues);39
if (root.left != null) {40
traverseAndAdd(root.left, nodesValues);