Skip to content

Commit 04ab687

Browse files
authored
Add Java solution to README_EN.md
1 parent f5c1264 commit 04ab687

File tree

1 file changed

+57
-0
lines changed
  • solution/1000-1099/1028.Recover a Tree From Preorder Traversal

1 file changed

+57
-0
lines changed

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

Lines changed: 57 additions & 0 deletions
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

0 commit comments

Comments
 (0)