python實現劍指offer系列 重建二叉樹

2021-08-03 15:30:43 字數 937 閱讀 1584

題目:輸入某二叉樹的前序遍歷和中序遍歷的結果,請重建出該二叉樹。假設輸入的前序遍歷和中序遍歷的結果中都不含重複的數字。例如輸入前序遍歷序列和中序遍歷序列,則重建二叉樹並返回。

**:

class

node:

def__init__

(self, data, left, right):

self.data = data

self.left = left

self.right = right

defconstruct_tree

(pre_order, mid_order):

# if len(pre_order) == 0

or len(mid_oder) ==0 :

return

none

# 前序遍歷的第乙個結點一定是根結點

root_data = pre_order[0]

for i in range(0, len(mid_order)):

if mid_order[i] == root_data:

break

# 遞迴構造左子樹和右子樹

left = construct_tree(pre_order[1 : 1 + i], mid_order[:i])

right = construct_tree(pre_order[1 + i:], mid_order[i+1:])

return node(root_data, left, right)

if __name__ == '__main__':

pre_order = [1, 2, 4, 7, 3, 5, 6, 8]

mid_order = [4, 7, 2, 1, 5, 3, 8, 6]

root = construct_tree(pre_order, mid_order)

劍指offer的Python實現(二)

python方法大總結 方法一 直接min函式,有點像開掛 class solution def minnumberinrotatearray self,rotatearray write code here if not rotatearray return 0 else return min r...

劍指offer 跳台階 python 實現

題目描述 乙隻青蛙一次可以跳上1級台階,也可以跳上2級。求該青蛙跳上乙個n級的台階總共有多少種跳法 先後次序不同算不同的結果 草稿上想了想,這道題跟劍指offer 斐波那契數列 一樣,只是n 1 2時情況有點不同。coding utf 8 class solution def jumpfloor s...

劍指offer 跳台階 Python 實現

題目描述 乙隻青蛙一次可以跳上1級台階,也可以跳上2級。求該青蛙跳上乙個n級的台階總共有多少種跳法 先後次序不同算不同的結果 解題思路 此題是斐波那契數列的擴充套件 青蛙跳第n n 2 級台階時,可以從第n 1級跳一級,也可以從第n 2級跳兩級,也就是斐波那契數列。用python實現的 如下 cod...