mirror of
https://github.com/youngyangyang04/leetcode-master.git
synced 2025-07-08 08:50:15 +08:00
Update 0106.从中序与后序遍历序列构造二叉树.md
python 代码重复
This commit is contained in:
@ -400,8 +400,6 @@ public:
|
|||||||
};
|
};
|
||||||
```
|
```
|
||||||
|
|
||||||
## Python
|
|
||||||
|
|
||||||
|
|
||||||
# 105.从前序与中序遍历序列构造二叉树
|
# 105.从前序与中序遍历序列构造二叉树
|
||||||
|
|
||||||
@ -657,38 +655,6 @@ class Solution {
|
|||||||
|
|
||||||
## Python
|
## Python
|
||||||
|
|
||||||
```python
|
|
||||||
class Solution:
|
|
||||||
def buildTree(self, inorder: List[int], postorder: List[int]) -> Optional[TreeNode]:
|
|
||||||
# 第一步: 特殊情况讨论: 树为空. 或者说是递归终止条件
|
|
||||||
if not postorder:
|
|
||||||
return
|
|
||||||
|
|
||||||
# 第二步: 后序遍历的最后一个就是当前的中间节点
|
|
||||||
root_val = postorder[-1]
|
|
||||||
root = TreeNode(root_val)
|
|
||||||
|
|
||||||
# 第三步: 找切割点.
|
|
||||||
root_index = inorder.index(root_val)
|
|
||||||
|
|
||||||
# 第四步: 切割inorder数组. 得到inorder数组的左,右半边.
|
|
||||||
left_inorder = inorder[:root_index]
|
|
||||||
right_inorder = inorder[root_index + 1:]
|
|
||||||
|
|
||||||
# 第五步: 切割postorder数组. 得到postorder数组的左,右半边.
|
|
||||||
# ⭐️ 重点1: 中序数组大小一定跟后序数组大小是相同的.
|
|
||||||
left_postorder = postorder[:len(left_inorder)]
|
|
||||||
right_postorder = postorder[len(left_inorder): len(postorder) - 1]
|
|
||||||
|
|
||||||
|
|
||||||
# 第六步: 递归
|
|
||||||
root.left = self.buildTree(left_inorder, left_postorder)
|
|
||||||
root.right = self.buildTree(right_inorder, right_postorder)
|
|
||||||
|
|
||||||
# 第七步: 返回答案
|
|
||||||
return root
|
|
||||||
```
|
|
||||||
|
|
||||||
105.从前序与中序遍历序列构造二叉树
|
105.从前序与中序遍历序列构造二叉树
|
||||||
|
|
||||||
```python
|
```python
|
||||||
@ -717,7 +683,7 @@ class Solution:
|
|||||||
# 第六步: 递归
|
# 第六步: 递归
|
||||||
root.left = self.buildTree(preorder_left, inorder_left)
|
root.left = self.buildTree(preorder_left, inorder_left)
|
||||||
root.right = self.buildTree(preorder_right, inorder_right)
|
root.right = self.buildTree(preorder_right, inorder_right)
|
||||||
|
# 第七步: 返回答案
|
||||||
return root
|
return root
|
||||||
```
|
```
|
||||||
|
|
||||||
@ -749,7 +715,7 @@ class Solution:
|
|||||||
# 第六步: 递归
|
# 第六步: 递归
|
||||||
root.left = self.buildTree(inorder_left, postorder_left)
|
root.left = self.buildTree(inorder_left, postorder_left)
|
||||||
root.right = self.buildTree(inorder_right, postorder_right)
|
root.right = self.buildTree(inorder_right, postorder_right)
|
||||||
|
# 第七步: 返回答案
|
||||||
return root
|
return root
|
||||||
```
|
```
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user