递归------python实现列表创建二叉树
# -*- coding:utf-8 -*- '二叉树结点类'
class TreeNode:
def __init__(self, x):
self.val = x
self.left = None
self.right = None '列表创建二叉树'
def listcreattree(root,llist,i):###用列表递归创建二叉树,
#它其实创建过程也是从根开始a开始,创左子树b,再创b的左子树,如果b的左子树为空,返回none。
#再接着创建b的右子树,
if i<len(llist):
if llist[i] =='#':
return None ###这里的return很重要
else:
root=TreeNode(llist[i])
print('列表序号:'+str(i)+' 二叉树的值:'+str(root.val))
#往左递推
root.left=listcreattree(root.left,llist,2*i+1)#从根开始一直到最左,直至为空,
#往右回溯
root.right=listcreattree(root.right, llist,2*i+2)#再返回上一个根,回溯右,
#再返回根'
print('************返回根:',root.val)
return root ###这里的return很重要
return root
llist=['','','','#','','']
listcreattree(None,llist,0)
运行结果:
列表序号:0 二叉树的值:1
列表序号:1 二叉树的值:2
列表序号:4 二叉树的值:4
************返回根: 4
************返回根: 2
列表序号:2 二叉树的值:3
列表序号:5 二叉树的值:5
************返回根: 5
************返回根: 3
************返回根: 1
递归------python实现列表创建二叉树的更多相关文章
- Python 实现列表与二叉树相互转换并打印二叉树封装类-详细注释+完美对齐
		
# Python 实现列表与二叉树相互转换并打印二叉树封装类-详细注释+完美对齐 from binarytree import build import random # https://www.cn ...
 - Python 实现列表与二叉树相互转换并打印二叉树16-详细注释+完美对齐-OK
		
# Python 实现列表与二叉树相互转换并打印二叉树16-详细注释+完美对齐-OK from binarytree import build import random # https://www. ...
 - python根据列表创建文件夹,拷贝指定文件
		
内容涉及:关键字定位,列表去重复,路径组装,文件夹创建,文件拷贝,字符串分割 list.txt的内容为包含关键字的文件路径,如:关键字 ’181‘ org/20190523/1/20190523201 ...
 - 递归/非递归----python深度遍历二叉树(前序遍历,中序遍历,后序遍历)
		
递归代码:递归实现很简单 '二叉树结点类' class TreeNode: def __init__(self, x): self.val = x self.left = None self.righ ...
 - 非递归创建二叉树( C++队列 )
		
非递归按照 层序 创建二叉树,利用 队列(即可先进先出特点)存放已访问的结点元素的地址. 初始化:front=rear= -1: 每储存一个结点元素 rear+1 ,利用 rear%2==0 来使 f ...
 - c++实现二叉树层序、前序创建二叉树,递归非递归实现二叉树遍历
		
#include <iostream> #include <cstdio> #include <stdio.h> #include <string> # ...
 - java创建二叉树并实现非递归中序遍历二叉树
		
java创建二叉树并递归遍历二叉树前面已有讲解:http://www.cnblogs.com/lixiaolun/p/4658659.html. 在此基础上添加了非递归中序遍历二叉树: 二叉树类的代码 ...
 - 用c语言实现前序创建二叉树(递归),分别用前序,中序,后序遍历,以及分别输出节点个数和叶子节点个数
		
本人c语言小白一枚,近期在学习数据结构(c语言版),特写此随笔,做一些总结和分享,如有不当之处,请各位技术大牛斧正 首先我们用一个结构体来抽象树的结点,代码如下(这里我们存放的数据为char型,大家可 ...
 - Python之列表、字符串、元组和字典的基本用法
		
1 模块初识 Python的强大之处在于他有非常丰富和强大的标准库和第三方库,几乎你想实现的任何功能都有相应的Python库支持,以后的课程中会深入讲解常用到的各种库,现在,我们先来象征性的学2个简单 ...
 
随机推荐
- HDU 3416
			
Marriage Match IV Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others ...
 - 一文了解@Conditional注解说明和使用
			
 @Conditional:Spring4.0 介绍了一个新的注解@Conditional,它的逻辑语义可以作为"If-then-else-"来对bean的注册起作用. @Con ...
 - Java过滤特殊字符
			
Java正则表达式过滤 1.Java过滤特殊字符的正则表达式----转载 java过滤特殊字符的正则表达式[转载] 2010-08-05 11:06 Java过滤特殊字符的正则表达式 关键字: j ...
 - Cesium--气泡弹窗
			
参考资料 首先感谢以下博主们的帮助,本人刚接触Cesium不久,无奈只能拾人牙慧了. 由于cesium没有自带的点击弹出气泡的功能,所以需要自己去开发一个这样的功能,网络上资源很多,看到基本思路都一致 ...
 - Codeforces Round #316 (Div. 2) (ABC题)
			
A - Elections 题意: 每一场城市选举的结果,第一关键字是票数(降序),第二关键字是序号(升序),第一位获得胜利. 最后的选举结果,第一关键字是获胜城市数(降序),第二关键字是序号(升序) ...
 - linux  读取文件信息并且输出
			
版权为个人所有,欢迎转载如转载请说明出处.(东北大亨) http://www.cnblogs.com/northeastTycoon/p/5513231.html 以下为读取文件信息做输出操作. 1. ...
 - 从symbol link和hard link 到 unlink函数的一点记录
			
之前一直对Linux的文件类型中的 “l” 类型的了解不是很深入,最近经过“圣经”指点,略知一二,在此先记录一下,以便以后查阅,之后会对文件和目录.文件I/O这部分再扩充. 首先需明确,Unix在查阅 ...
 - 【BZOJ3601】一个人的数论 高斯消元+莫比乌斯反演
			
[BZOJ3601]一个人的数论 题解:本题的做法还是很神的~ 那么g(n)如何求呢?显然它的常数项=0,我们可以用待定系数法,将n=1...d+1的情况代入式子中解方程,有d+1个方程和d+1个未知 ...
 - 【BZOJ4198】[Noi2015]荷马史诗 贪心+堆
			
[BZOJ4198][Noi2015]荷马史诗 Description 追逐影子的人,自己就是影子. ——荷马 Allison 最近迷上了文学.她喜欢在一个慵懒的午后,细细地品上一杯卡布奇诺,静静地阅 ...
 - dubbo介绍及其使用案例
			
dubbo介绍及其使用案例 1. Dubbo是什么? Dubbo是一个分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案,以及SOA服务治理方案.简单的说,dubbo就是个服务框架,如果 ...