Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit b8f6df6

Browse files
Update 0106.从中序与后序遍历序列构造二叉树.md
新增一java寫法 和卡哥的思路一樣的
1 parent 3466eda commit b8f6df6

File tree

1 file changed

+35
-0
lines changed

1 file changed

+35
-0
lines changed

‎problems/0106.从中序与后序遍历序列构造二叉树.md‎

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -622,7 +622,42 @@ class Solution {
622622
}
623623
}
624624
```
625+
```java
626+
class Solution {
627+
public TreeNode buildTree(int[] inorder, int[] postorder) {
628+
if(postorder.length == 0 || inorder.length == 0)
629+
return null;
630+
return buildHelper(inorder, 0, inorder.length, postorder, 0, postorder.length);
631+
632+
}
633+
private TreeNode buildHelper(int[] inorder, int inorderStart, int inorderEnd, int[] postorder, int postorderStart, int postorderEnd){
634+
if(postorderStart == postorderEnd)
635+
return null;
636+
int rootVal = postorder[postorderEnd - 1];
637+
TreeNode root = new TreeNode(rootVal);
638+
int middleIndex;
639+
for (middleIndex = inorderStart; middleIndex < inorderEnd; middleIndex++){
640+
if(inorder[middleIndex] == rootVal)
641+
break;
642+
}
625643

644+
int leftInorderStart = inorderStart;
645+
int leftInorderEnd = middleIndex;
646+
int rightInorderStart = middleIndex + 1;
647+
int rightInorderEnd = inorderEnd;
648+
649+
650+
int leftPostorderStart = postorderStart;
651+
int leftPostorderEnd = postorderStart + (middleIndex - inorderStart);
652+
int rightPostorderStart = leftPostorderEnd;
653+
int rightPostorderEnd = postorderEnd - 1;
654+
root.left = buildHelper(inorder, leftInorderStart, leftInorderEnd, postorder, leftPostorderStart, leftPostorderEnd);
655+
root.right = buildHelper(inorder, rightInorderStart, rightInorderEnd, postorder, rightPostorderStart, rightPostorderEnd);
656+
657+
return root;
658+
}
659+
}
660+
```
626661
105.从前序与中序遍历序列构造二叉树
627662

628663
```java

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /