File tree Expand file tree Collapse file tree 1 file changed +70
-0
lines changed
src/main/java/com/leetcode/trees Expand file tree Collapse file tree 1 file changed +70
-0
lines changed Original file line number Diff line number Diff line change 1+ /**
2+ * Definition for a binary tree node.
3+ * public class TreeNode {
4+ * int val;
5+ * TreeNode left;
6+ * TreeNode right;
7+ * TreeNode(int x) { val = x; }
8+ * }
9+ */
10+ class Solution {
11+ public void recoverTree(TreeNode root) {
12+
13+ TreeNode temp1=null;
14+ TreeNode temp2=null;
15+ TreeNode prev=null;
16+ TreeNode curr=root;
17+
18+ while(curr!=null){
19+ if(curr.left==null){
20+ if(prev!=null && prev.val>curr.val){
21+ if(temp1==null){
22+ temp1=prev;
23+ temp2=curr;
24+ }else{
25+ temp2=curr;
26+ }
27+ }
28+ prev=curr;
29+ curr=curr.right;
30+
31+
32+ }else{
33+
34+ TreeNode curr1=curr.left;
35+ while(curr1.right!=null && curr1.right!=curr){
36+ curr1=curr1.right;
37+ }
38+ if(curr1.right==null){
39+ curr1.right=curr;
40+ curr=curr.left;
41+ }else{
42+ if(prev!=null && prev.val>curr.val){
43+ // System.out.println(prev.val+" --"+curr.val);
44+ if(temp1==null){
45+ temp1=prev;
46+ temp2=curr;
47+ }else{
48+ temp2=curr;
49+ }
50+ }
51+ curr1.right=null;
52+ prev=curr;
53+ curr=curr.right;
54+ // System.out.println(prev.val+"**"+curr.val);
55+
56+ }
57+
58+ }
59+
60+ }
61+ // System.out.println(temp1.val+"=="+temp2.val);
62+ if(temp1==null){
63+ return ;
64+ }
65+
66+ int temp=temp1.val;
67+ temp1.val=temp2.val;
68+ temp2.val=temp;
69+ }
70+ }
You can’t perform that action at this time.
0 commit comments