# 通过前序创建二叉树
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)