创建二叉树
通过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