LeetCode 105[Python]. 從前序與中序遍歷序列構造二叉樹 根據一棵樹的前序遍歷與中序遍歷構造二叉樹。 注意: 你可以假設樹中沒有重複的元素。
阿新 • • 發佈:2020-12-14
LeetCode 105. 從前序與中序遍歷序列構造二叉樹
根據一棵樹的前序遍歷與中序遍歷構造二叉樹。
注意:
你可以假設樹中沒有重複的元素。
# Definition for a binary tree node.
# class TreeNode:
# def __init__(self, x):
# self.val = x
# self.left = None
# self.right = None
Code
def buildTree(self, preorder: List[int], inorder: List[int]) -> TreeNode: if len(inorder)==0 or len(preorder)==0: return None root=TreeNode(preorder[0])#root節點 mid=inorder.index(root.val) root.left=self.buildTree(preorder[1:mid+1],inorder[:mid]) #構建左節點 root.right=self.buildTree(preorder[mid+1:],inorder[mid+1:])#構建右節點 return root
想法
前序遍歷:遍歷順序為 父節點 -> 左子節點 -> 右子節點
中序遍歷:遍歷順序為 左子節點 -> 父節點 -> 右子節點
左子樹節點個數 = 中序遍歷中根節點索引 - 開始位置
右子樹節點個數 = 結束位置 - 中序遍歷中根節點索引