ACM模式 根據陣列構造二叉樹

2022-10-09 05:54:10 字數 1341 閱讀 5485

參考:

前序/acm模式如何構建二叉樹.md

# 先根據資料列表獲得對應的節點列表

for i in range(len(nums)):

node = none

if nums[i] != -1: # -1指代是none

node = treenode(nums[i])

if i == 0:

root = node

# 根據資料列表的關係,設定節點的left和right指標

i = 0

while i * 2 + 2 < len(nums):

if tree[i]:

tree[i].left = tree[i * 2 + 1]

tree[i].right = tree[i * 2 + 2]

i += 1

return root

# 層次列印二叉樹

def print_bin_tree(root):

if not root: return

q = collections.deque()

res =

while q:

row_size = len(q)

row =

for i in range(row_size):

nd = q.popleft()

if nd.left:

if nd.right:

return res

nums = [4,1,6,0,2,5,7,-1,-1,-1,3,-1,-1,-1,8]

root = construct_bin_tree(nums)

print(print_bin_tree(root))

[[4], [1, 6], [0, 2, 5, 7], [3, 8]]

二叉樹列印所有的路徑 根據陣列構建完全二叉樹

這道題目暫時沒想起來怎麼用遞迴去做,就用非遞迴吧。這道題目是的位址是 主要是用了乙個vector來儲存節點資訊,這個節點資訊是對原來節點資訊的封裝,增加了兩個單獨的引數,這兩個引數表示 左右子樹是不是存在以及是不是訪問過 預設值是 1,取0表示有子樹且沒有訪問過,取1錶子樹已經訪問過。基本邏輯是先沿...

二叉樹 根據遍歷構造二叉樹

二叉樹中的三種遍歷方式,是我們最為熟知的,通過先序遍歷 中序遍歷或者是中序遍歷 後序遍歷都可以唯一確定一棵二叉樹 但是注意,先序遍歷 後序遍歷不能確定一棵二叉樹,但是如果一棵二叉樹中只有度為0和度為2的節點,那麼這種遍歷方式也是可以確定一棵確定的二叉樹的。先序 中序 構造二叉樹 下面我們分別來看一下...

二叉樹 根據二叉樹遍歷序列構造二叉樹

二叉樹的節點型別宣告如下 struct btnode 定理1任何 n 0 個不同節點的二叉樹,都可由它的前序序列和中序序列唯一地確定。根據前序遍歷的特點,知前序序列 presequence 的首個元素 presequence 0 為二叉樹的根 root 然後在中序序列 insequence 中查詢此...