1 # -*- coding:utf-8 -*- 2 3 '二叉树结点类' 4 class TreeNode: 5 def __init__(self, x): 6 self.val = x 7 self.left = None 8 self.right = None 9 10 '列表创建二叉树' 11 def listcreattree(root,llist,i):###用列表递归创建二叉树, 12 #它其实创建过程也是从根开始a开始,创左子树b,再创b的左子树,如果b的左子树为空,返回none。 13 #再接着创建b的右子树, 14 if i<len(llist): 15 if llist[i] =='#': 16 return None ###这里的return很重要 17 else: 18 root=TreeNode(llist[i]) 19 print('列表序号:'+str(i)+' 二叉树的值:'+str(root.val)) 20 #往左递推 21 root.left=listcreattree(root.left,llist,2*i+1)#从根开始一直到最左,直至为空, 22 #往右回溯 23 root.right=listcreattree(root.right, llist,2*i+2)#再返回上一个根,回溯右, 24 #再返回根' 25 print('************返回根:',root.val) 26 return root ###这里的return很重要 27 return root 28 llist=['1','2','3','#','4','5'] 29 listcreattree(None,llist,0)
运行结果:
1 列表序号:0 二叉树的值:1 2 列表序号:1 二叉树的值:2 3 列表序号:4 二叉树的值:4 4 ************返回根: 4 5 ************返回根: 2 6 列表序号:2 二叉树的值:3 7 列表序号:5 二叉树的值:5 8 ************返回根: 5 9 ************返回根: 3 10 ************返回根: 1