我必須定義三個函數:preorder(t):
,postorder(t):
和inorder(t):
。樹遍歷python
每個函數都會將二叉樹作爲輸入並返回一個列表。這個列表應該以相同的方式排序,樹元素將在相應的遍歷中訪問(後序,預訂或者順序)
我已經爲它們中的每一個編寫了代碼,但是我保留得到一個錯誤,當我調用另一個函數(flat_list()
),我得到
if not x or len(x) < 1 or n > len(x) or x[n] == None:
IndexError: list index out of range
代碼拋出的索引錯誤我遍歷方法如下:
def postorder(t):
pass
if t != None:
postorder(t.get_left())
postorder(t.get_right())
print(t.get_data())
def pre_order(t):
if t != None:
print(t.get_data())
pre_order(t.get_left())
pre_order(t.get_right())
def in_order(t):
pass
if t != None:
in_order(t.get_left())
print(t.get_data())
in_order(t.get_right())
def flat_list2(x,n):
if not x or len(x) < 1 or n > len(x) or x[n] == None:
return None
bt = BinaryTree(x[n])
bt.set_left(flat_list2(x, 2*n))
bt.set_right(flat_list2(x, 2*n + 1))
return bt
這是我如何調用flat_list2
flat_node_list = [None, 55, 24, 72, 8, 51, None, 78, None, None, 25]
bst = create_tree_from_flat_list2(flat_node_list,1)
pre_order_nodes = pre_order(bst)
in_order_nodes = in_order(bst)
post_order_nodes = post_order(bst)
print(pre_order_nodes)
print(in_order_nodes)
print(post_order_nodes)
哎它仍然打印出一個錯誤生病顯示我的flat_list方法 – deans7
香港專業教育學院編輯我的問題和 – deans7
@ deans7添加它更新了我的答案,解決您的錯誤 –