File tree Expand file tree Collapse file tree 1 file changed +18
-20
lines changed Expand file tree Collapse file tree 1 file changed +18
-20
lines changed Original file line number Diff line number Diff line change 4
4
* int val;
5
5
* TreeNode left;
6
6
* TreeNode right;
7
- * TreeNode(int x) { val = x; }
7
+ * TreeNode() {}
8
+ * TreeNode(int val) { this.val = val; }
9
+ * TreeNode(int val, TreeNode left, TreeNode right) {
10
+ * this.val = val;
11
+ * this.left = left;
12
+ * this.right = right;
13
+ * }
8
14
* }
9
15
*/
10
16
class Solution {
11
17
public TreeNode bstToGst (TreeNode root ) {
12
- if (root == null ) {
13
- return null ;
14
- }
15
- TreeNode curr = root ;
16
- Stack <TreeNode > stack = new Stack <>();
17
18
int sum = 0 ;
18
- pushRight (stack , curr );
19
- while (!stack .isEmpty ()) {
20
- TreeNode removed = stack .pop ();
21
- sum += removed .val ;
22
- removed .val = sum ;
23
- TreeNode leftNode = removed .left ;
24
- pushRight (stack , leftNode );
19
+ TreeNode node = root ;
20
+ Stack <TreeNode > stack = new Stack <>();
21
+ while (!stack .isEmpty () || node != null ) {
22
+ while (node != null ) {
23
+ stack .add (node );
24
+ node = node .right ;
25
+ }
26
+ node = stack .pop ();
27
+ sum += node .val ;
28
+ node .val = sum ;
29
+ node = node .left ;
25
30
}
26
31
return root ;
27
32
}
28
-
29
- private void pushRight (Stack <TreeNode > stack , TreeNode curr ) {
30
- while (curr != null ) {
31
- stack .push (curr );
32
- curr = curr .right ;
33
- }
34
- }
35
33
}
You can’t perform that action at this time.
0 commit comments