Skip to content

Commit bf9646a

Browse files
authored
feat: add typescript solution to locf problem: No.07. Build Tree (#425)
1 parent 5ccd897 commit bf9646a

File tree

2 files changed

+51
-0
lines changed

2 files changed

+51
-0
lines changed

lcof/面试题07. 重建二叉树/README.md

+28
Original file line numberDiff line numberDiff line change
@@ -187,6 +187,34 @@ private:
187187
};
188188
```
189189
190+
### **TypeScript**
191+
192+
```ts
193+
/**
194+
* Definition for a binary tree node.
195+
* class TreeNode {
196+
* val: number
197+
* left: TreeNode | null
198+
* right: TreeNode | null
199+
* constructor(val?: number, left?: TreeNode | null, right?: TreeNode | null) {
200+
* this.val = (val===undefined ? 0 : val)
201+
* this.left = (left===undefined ? null : left)
202+
* this.right = (right===undefined ? null : right)
203+
* }
204+
* }
205+
*/
206+
207+
function buildTree(preorder: number[], inorder: number[]): TreeNode | null {
208+
if (preorder.length == 0) return null;
209+
let val: number = preorder[0];
210+
let node: TreeNode = new TreeNode(val);
211+
let index: number = inorder.indexOf(val);
212+
node.left = buildTree(preorder.slice(1, index + 1), inorder.slice(0, index));
213+
node.right = buildTree(preorder.slice(index + 1), inorder.slice(index + 1));
214+
return node;
215+
};
216+
```
217+
190218
### **...**
191219

192220
```
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
/**
2+
* Definition for a binary tree node.
3+
* class TreeNode {
4+
* val: number
5+
* left: TreeNode | null
6+
* right: TreeNode | null
7+
* constructor(val?: number, left?: TreeNode | null, right?: TreeNode | null) {
8+
* this.val = (val===undefined ? 0 : val)
9+
* this.left = (left===undefined ? null : left)
10+
* this.right = (right===undefined ? null : right)
11+
* }
12+
* }
13+
*/
14+
15+
function buildTree(preorder: number[], inorder: number[]): TreeNode | null {
16+
if (preorder.length == 0) return null;
17+
let val: number = preorder[0];
18+
let node: TreeNode = new TreeNode(val);
19+
let index: number = inorder.indexOf(val);
20+
node.left = buildTree(preorder.slice(1, index + 1), inorder.slice(0, index));
21+
node.right = buildTree(preorder.slice(index + 1), inorder.slice(index + 1));
22+
return node;
23+
};

0 commit comments

Comments
 (0)