Skip to content

Commit c73dfce

Browse files
authored
feat: add java solution to lc problem: No.1028 (#4096)
1 parent c3fa0cf commit c73dfce

File tree

3 files changed

+166
-0
lines changed

3 files changed

+166
-0
lines changed

solution/1000-1099/1028.Recover a Tree From Preorder Traversal/README.md

+57
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,63 @@ tags:
7474

7575
<!-- tabs:start -->
7676

77+
#### Java
78+
79+
```java
80+
/**
81+
* Definition for a binary tree node.
82+
* public class TreeNode {
83+
* int val;
84+
* TreeNode left;
85+
* TreeNode right;
86+
* TreeNode() {}
87+
* TreeNode(int val) { this.val = val; }
88+
* TreeNode(int val, TreeNode left, TreeNode right) {
89+
* this.val = val;
90+
* this.left = left;
91+
* this.right = right;
92+
* }
93+
* }
94+
*/
95+
class Solution {
96+
public TreeNode recoverFromPreorder(String traversal) {
97+
Stack<TreeNode> stack = new Stack<>();
98+
int i = 0;
99+
100+
while (i < traversal.length()) {
101+
int depth = 0;
102+
while (i < traversal.length() && traversal.charAt(i) == '-') {
103+
depth++;
104+
i++;
105+
}
106+
107+
int num = 0;
108+
while (i < traversal.length() && Character.isDigit(traversal.charAt(i))) {
109+
num = num * 10 + (traversal.charAt(i) - '0');
110+
i++;
111+
}
112+
113+
// Create the new node
114+
TreeNode newNode = new TreeNode(num);
115+
116+
while (stack.size() > depth) {
117+
stack.pop();
118+
}
119+
if (!stack.isEmpty()) {
120+
if (stack.peek().left == null) {
121+
stack.peek().left = newNode;
122+
} else {
123+
stack.peek().right = newNode;
124+
}
125+
}
126+
127+
stack.push(newNode);
128+
}
129+
return stack.isEmpty() ? null : stack.get(0);
130+
}
131+
}
132+
```
133+
77134
#### C++
78135

79136
```cpp

solution/1000-1099/1028.Recover a Tree From Preorder Traversal/README_EN.md

+57
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,63 @@ tags:
6969

7070
<!-- tabs:start -->
7171

72+
#### Java
73+
74+
```java
75+
/**
76+
* Definition for a binary tree node.
77+
* public class TreeNode {
78+
* int val;
79+
* TreeNode left;
80+
* TreeNode right;
81+
* TreeNode() {}
82+
* TreeNode(int val) { this.val = val; }
83+
* TreeNode(int val, TreeNode left, TreeNode right) {
84+
* this.val = val;
85+
* this.left = left;
86+
* this.right = right;
87+
* }
88+
* }
89+
*/
90+
class Solution {
91+
public TreeNode recoverFromPreorder(String traversal) {
92+
Stack<TreeNode> stack = new Stack<>();
93+
int i = 0;
94+
95+
while (i < traversal.length()) {
96+
int depth = 0;
97+
while (i < traversal.length() && traversal.charAt(i) == '-') {
98+
depth++;
99+
i++;
100+
}
101+
102+
int num = 0;
103+
while (i < traversal.length() && Character.isDigit(traversal.charAt(i))) {
104+
num = num * 10 + (traversal.charAt(i) - '0');
105+
i++;
106+
}
107+
108+
// Create the new node
109+
TreeNode newNode = new TreeNode(num);
110+
111+
while (stack.size() > depth) {
112+
stack.pop();
113+
}
114+
if (!stack.isEmpty()) {
115+
if (stack.peek().left == null) {
116+
stack.peek().left = newNode;
117+
} else {
118+
stack.peek().right = newNode;
119+
}
120+
}
121+
122+
stack.push(newNode);
123+
}
124+
return stack.isEmpty() ? null : stack.get(0);
125+
}
126+
}
127+
```
128+
72129
#### C++
73130

74131
```cpp
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
/**
2+
* Definition for a binary tree node.
3+
* public class TreeNode {
4+
* int val;
5+
* TreeNode left;
6+
* TreeNode right;
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+
* }
14+
* }
15+
*/
16+
class Solution {
17+
public TreeNode recoverFromPreorder(String traversal) {
18+
Stack<TreeNode> stack = new Stack<>();
19+
int i = 0;
20+
21+
while (i < traversal.length()) {
22+
int depth = 0;
23+
while (i < traversal.length() && traversal.charAt(i) == '-') {
24+
depth++;
25+
i++;
26+
}
27+
28+
int num = 0;
29+
while (i < traversal.length() && Character.isDigit(traversal.charAt(i))) {
30+
num = num * 10 + (traversal.charAt(i) - '0');
31+
i++;
32+
}
33+
34+
// Create the new node
35+
TreeNode newNode = new TreeNode(num);
36+
37+
while (stack.size() > depth) {
38+
stack.pop();
39+
}
40+
if (!stack.isEmpty()) {
41+
if (stack.peek().left == null) {
42+
stack.peek().left = newNode;
43+
} else {
44+
stack.peek().right = newNode;
45+
}
46+
}
47+
48+
stack.push(newNode);
49+
}
50+
return stack.isEmpty() ? null : stack.get(0);
51+
}
52+
}

0 commit comments

Comments
 (0)