Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
Skip to content

Commit 282bd09

Browse files
Create RecoverBInaryTree,java
1 parent 497e463 commit 282bd09

File tree

1 file changed

+70
-0
lines changed

1 file changed

+70
-0
lines changed
Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,70 @@
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+
}

0 commit comments

Comments
 (0)