递归------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)

运行结果: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

相关文章
相关标签/搜索