Merge pull request #1248 from ChubbyPan/master

更新了文件<ACM模式如何构建二叉树>python3版本
This commit is contained in:
程序员Carl
2022-05-13 10:00:07 +08:00
committed by GitHub

View File

@ -266,7 +266,61 @@ public class Solution {
## Python
```Python
```Python3
class TreeNode:
def __init__(self, val = 0, left = None, right = None):
self.val = val
self.left = left
self.right = right
# 根据数组构建二叉树
def construct_binary_tree(nums: []) -> TreeNode:
if not nums:
return None
# 用于存放构建好的节点
root = TreeNode(-1)
Tree = []
# 将数组元素全部转化为树节点
for i in range(len(nums)):
if nums[i]!= -1:
node = TreeNode(nums[i])
else:
node = None
Tree.append(node)
if i == 0:
root = node
for i in range(len(Tree)):
node = Tree[i]
if node and (2 * i + 2) < len(Tree):
node.left = Tree[i * 2 + 1]
node.right = Tree[i * 2 + 2]
return root
# 算法:中序遍历二叉树
class Solution:
def __init__(self):
self.T = []
def inorder(self, root: TreeNode) -> []:
if not root:
return
self.inorder(root.left)
self.T.append(root.val)
self.inorder(root.right)
return self.T
# 验证创建二叉树的有效性,二叉排序树的中序遍历应为顺序排列
test_tree = [3, 1, 5, -1, 2, 4 ,6]
root = construct_binary_tree(test_tree)
A = Solution()
print(A.inorder(root))
```