File tree 1 file changed +19
-15
lines changed 1 file changed +19
-15
lines changed Original file line number Diff line number Diff line change 14
14
* }
15
15
*/
16
16
class Solution {
17
- TreeNode curr ;
18
17
public TreeNode increasingBST (TreeNode root ) {
19
- TreeNode ans = new TreeNode (-1 );
20
- curr = ans ;
21
- inorder (root );
22
- return ans .right ;
23
- }
24
-
25
- private void inorder (TreeNode node ) {
26
- if (node == null ) {
27
- return ;
18
+ Stack <TreeNode > stack = new Stack <>();
19
+ while (root != null ) {
20
+ stack .push (root );
21
+ root = root .left ;
22
+ }
23
+ TreeNode newHead = null ;
24
+ while (!stack .isEmpty ()) {
25
+ TreeNode removed = stack .pop ();
26
+ if (newHead == null ) {
27
+ newHead = removed ;
28
+ }
29
+ TreeNode rightNode = removed .right ;
30
+ while (rightNode != null ) {
31
+ stack .push (rightNode );
32
+ rightNode = rightNode .left ;
33
+ }
34
+ removed .right = stack .isEmpty () ? null : stack .peek ();
35
+ removed .left = null ;
28
36
}
29
- inorder (node .left );
30
- node .left = null ;
31
- curr .right = node ;
32
- curr = node ;
33
- inorder (node .right );
37
+ return newHead ;
34
38
}
35
39
}
You can’t perform that action at this time.
0 commit comments