遞歸------python實現列表創建二叉樹


 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

原鏈接


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM