# 通過前序創建二叉樹
class TreeNode:
def __init__(self, left=None, right=None, data=None):
self.left = left
self.right = right
self.data = data
def __str__(self):
return self.data
class BTree:
def __init__(self):
self.root = None # 根節點
self.tree = [] # 存儲所有的值
self.nodes = [] # 存儲所有的數節點
def is_empty(self):
if self.root is None:
return True
else:
return False
def create(self,msg='enter root number( * 結束):'): # 創建二叉樹
data = input(msg)
if data is '*': # 終止條件
return
node = TreeNode(data=data)
if self.root is None: # 起始點
self.root = node
self.tree.append(node.data)
# 可以控制前序(後序、中序)
self.nodes.append(node)
node.left = self.create('enter {} left number( * 結束):'.format(node.data))
node.right = self.create('enter {} right number( * 結束):'.format(node.data))
# ------------------------
# root:9
# 7 8
# 2 5
#
# -------------------------
# 前序遍歷:根左右
# 先序遍歷結果爲:9 7 2 5 8
# 中序遍歷:左根右
# 中序遍歷結果爲:2 7 5 9 8
# 後序遍歷:左右根
# 後序遍歷結果爲:2 5 7 8 9
bt = BTree()
bt.create() # 前序添加
print(bt.tree) # 前序輸出
for n in bt.nodes: # 打印結果
print(n)