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)
運行結果:url
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
原連接spa