創建二叉樹
通過python實現,將所給列表作爲參數
相關代碼
# -*- coding:utf-8 -*-
'二叉樹結點類'
class TreeNode:
def __init__(self, x):
self.val = x
self.left = None
self.right = None
'列表創建二叉樹'
def listCreatTree(root, llist, i):
if i < len(llist):
if llist[i] == '#':
return None ###這裏的return很重要
else:
root = TreeNode(llist[i])
# 往左遞推
root.left = listCreatTree(root.left, llist, 2 * i + 1) # 從根開始一直到最左,直至爲空,
# 往右回溯
root.right = listCreatTree(root.right, llist, 2 * i + 2) # 再返回上一個根,回溯右,
# 再返回根'
return root ###這裏的return很重要
return root
# 先序遍歷二叉樹
def preOrderBT(root):
if not root:
return None
print(root.val, end='\t')
preOrderBT(root.left)
preOrderBT(root.right)
# 中序遍歷二叉樹
def midOrdBT(root):
if not root:
return "#"
midOrdBT(root.left)
print(root.val, end="\t")
midOrdBT(root.right)
if __name__ == '__main__':
llist = ['1', '2', '3', '#', '4', '5', '6']
root = listCreatTree(None, llist, 0)
#p = root
print(".............................")
preOrderBT(root)
print()
midOrdBT(root)
# print(root.val)
# while root
結果
其中第一行爲前序遍歷;後一行爲中序遍歷。
.............................
1 2 4 3 5 6
2 4 1 5 3 6