Skip to content

Commit 41f8d25

Browse files
committed
note
1 parent 35292be commit 41f8d25

File tree

3 files changed

+60
-16
lines changed

3 files changed

+60
-16
lines changed

guangxu/202102/20210201.md

+11-13
Original file line numberDiff line numberDiff line change
@@ -37,19 +37,17 @@ Return the following binary tree:
3737
*/
3838
class Solution {
3939
public TreeNode buildTree(int[] preorder, int[] inorder) {
40-
if(preorder==null||inorder==null||preorder.length==0||inorder.length==0){
41-
return null;
42-
}
43-
TreeNode treeNode = new TreeNode(preorder[0]);
44-
for(int i=0;i<inorder.length;i++){
45-
if(inorder[i]==preorder[0]){
46-
treeNode.left = buildTree(Arrays.copyOfRange(preorder, 1 ,i+1),
47-
Arrays.copyOfRange(inorder, 0 ,i));
48-
treeNode.right = buildTree(Arrays.copyOfRange(preorder, i+1 ,preorder.length),
49-
Arrays.copyOfRange(inorder, i+1 ,inorder.length));
50-
}
51-
}
52-
return treeNode;
40+
if(preorder==null || inorder==null || preorder.length==0 || inorder.length==0){
41+
return null;
42+
}
43+
TreeNode root = new TreeNode(preorder[0]);
44+
for(int i=0;i<inorder.length;i++){
45+
if(inorder[i]==preorder[0]){
46+
root.left = buildTree(Arrays.copyOfRange(preorder, 1, i+1), Arrays.copyOfRange(inorder, 0, i));
47+
root.right = buildTree(Arrays.copyOfRange(preorder, i+1, preorder.length), Arrays.copyOfRange(inorder, i+1, inorder.length));
48+
}
49+
}
50+
return root;
5351
}
5452
}
5553
```

guangxu/202102/20210202.md

+48-3
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,60 @@
11
## Algorithm
22

3+
[106. Construct Binary Tree from Inorder and Postorder Traversal](https://leetcode.com/problems/construct-binary-tree-from-inorder-and-postorder-traversal/)
34

4-
Construct Binary Tree from Inorder and Postorder Traversal
5+
### Description
56

7+
Given inorder and postorder traversal of a tree, construct the binary tree.
68

7-
### Description
9+
Note:
10+
You may assume that duplicates do not exist in the tree.
11+
12+
For example, given
13+
14+
```
15+
inorder = [9,3,15,20,7]
16+
postorder = [9,15,7,20,3]
17+
```
18+
19+
Return the following binary tree:
20+
21+
```
22+
3
23+
/ \
24+
9 20
25+
/ \
26+
15 7
27+
```
828

929
### Solution
1030

1131
```java
12-
32+
/**
33+
* Definition for a binary tree node.
34+
* public class TreeNode {
35+
* int val;
36+
* TreeNode left;
37+
* TreeNode right;
38+
* TreeNode(int x) { val = x; }
39+
* }
40+
*/
41+
class Solution {
42+
public TreeNode buildTree(int[] inorder, int[] postorder) {
43+
if(inorder==null||postorder==null||inorder.length==0||postorder.length==0){
44+
return null;
45+
}
46+
TreeNode treeNode = new TreeNode(postorder[postorder.length-1]);
47+
for(int i=0;i<inorder.length;i++){
48+
if(inorder[i]==postorder[postorder.length-1]){
49+
treeNode.left = buildTree(Arrays.copyOfRange(inorder, 0, i),
50+
Arrays.copyOfRange(postorder, 0, i));
51+
treeNode.right = buildTree(Arrays.copyOfRange(inorder, i+1, inorder.length),
52+
Arrays.copyOfRange(postorder, i, inorder.length-1));
53+
}
54+
}
55+
return treeNode;
56+
}
57+
}
1358
```
1459

1560
### Discuss

guangxu/README.md

+1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
| 标题 | Algorithm | Review | Tip | Share|
22
| :-----| :---- | :---- | :---- | :---- |
3+
| [20210202](./202102/20210202.md) |[106. Construct Binary Tree from Inorder and Postorder Traversal(中序和后序构造二叉树)](https://leetcode.com/problems/construct-binary-tree-from-inorder-and-postorder-traversal/)||||
34
| [20210201](./202102/20210201.md) |[105. Construct Binary Tree from Preorder and Inorder Traversal(前序和中序构造二叉树)](https://leetcode.com/problems/construct-binary-tree-from-preorder-and-inorder-traversal/)||||
45
| [20210131](./202101/20210131.md) |[145. Binary Tree Postorder Traversal(二叉树后序遍历)](https://leetcode.com/problems/binary-tree-postorder-traversal/)||||
56
| [20210130](./202101/20210130.md) |[144. Binary Tree Preorder Traversal(二叉树前序遍历)](https://leetcode.com/problems/binary-tree-preorder-traversal/)||||

0 commit comments

Comments
 (0)