python二叉树最大深度的计算_Python学习笔记24(二叉树遍历、最大深度、最大宽度)...
classNode(object):"""节点类"""
def __init__(self,elem=-1,lchild=None,rchild=None):
self.elem=elem
self.lchild=lchild
self.rchild=rchildclassTree(object):"""树类"""
def __init__(self):
self.root=None
self.myQueue=[]defadd(self,elem):"""为树添加节点"""node=Node(elem)if self.root == None: #如果树是空的,则对根节点赋值
self.root =node
self.myQueue.append(self.root)else:
treeNode= self.myQueue[0] #此节点的子树还没有对齐
if treeNode.lchild ==None:
treeNode.lchild=node
self.myQueue.append(treeNode.lchild)else:
treeNode.rchild=node
self.myQueue.append(treeNode.rchild)
self.myQueue.pop(0)deffront_digui(self,root):"""利用递归实现树的先序遍历
先序遍历:根-->左-->右"""
if root ==None:return
print(root.elem)
self.front_digui(root.lchild)
self.front_digui(root.rchild)defmiddle_digui(self,root):"""利用递归实现树的中序遍历
中序遍历:左-->根-->右"""
if root ==None:returnself.middle_digui(root.lchild)print(root.elem)
self.middle_digui(root.rchild)deflater_digui(self,root):"""利用递归实现树的后序遍历
后续遍历:左-->右-->根"""
if root ==None:returnself.later_digui(root.lchild)
self.later_digui(root.rchild)print(root.elem)deflevel_queue(self,root):"""利用队列实现树的层次遍历"""
if root ==None:returnmyQueue=[]
node=root
myQueue.append(node)whilemyQueue:
node=myQueue.pop(0)print(node.elem)if node.lchild !=None:
myQueue.append(node.lchild)if node.rchild !=None:
myQueue.append(node.rchild)deftreeDepth(self,root):"""求树的最大深度"""
if root ==None:return0
leftDepth=self.treeDepth(root.lchild)
rightDepth=self.treeDepth(root.rchild)if leftDepth >=rightDepth:return leftDepth+1
else:return rightDepth+1
deftreeWidth(self,root):"""求树的最大宽度"""curwidth= 1maxwidth=0
myQueue=[]
myQueue.append(root)whilemyQueue:
n=curwidthfor i inrange(n):
node=myQueue.pop(0)
curwidth-= 1
if node.lchild !=None:
myQueue.append(node.lchild)
curwidth+= 1
if node.rchild !=None:
myQueue.append(node.rchild)
curwidth+= 1
if curwidth >maxwidth:
maxwidth=curwidthreturnmaxwidthif __name__ == "__main__":
elems= range(14)
tree=Tree()for elem inelems:
tree.add(elem)print("先序遍历")
tree.front_digui(tree.root)print("中序遍历")
tree.middle_digui(tree.root)print("后续遍历")
tree.later_digui(tree.root)print("层次遍历")
tree.level_queue(tree.root)print("树的深度")print(tree.treeDepth(tree.root))print("树的宽度")print(tree.treeWidth(tree.root))
python二叉树最大深度的计算_Python学习笔记24(二叉树遍历、最大深度、最大宽度)...相关推荐
- python里while的用法_Python学习笔记之While循环用法分析
本文实例讲述了Python学习笔记之While循环用法.分享给大家供大家参考,具体如下: 前面一篇<Python学习笔记之For循环用法>详细介绍了Python for循环,这里再来讲述一 ...
- python中while的用法_Python学习笔记之While循环用法分析
本文实例讲述了Python学习笔记之While循环用法.分享给大家供大家参考,具体如下: 前面一篇<Python学习笔记之For循环用法>详细介绍了Python for循环,这里再来讲述一 ...
- python编程16章教程_Python学习笔记__16.2章 TCP编程
# 这是学习廖雪峰老师python教程的学习笔记 Socket是网络编程的一个抽象概念.通常我们用一个Socket表示"打开了一个网络链接",而打开一个Socket需要知道目标计算 ...
- python中if语句使用_Python学习笔记之if语句的使用示例
前言 条件语句在实际开发中我们已经使用过几次了,在这里我们需要再次隆重的来介绍一下它,下面话不多说了,来一起看看详细的介绍吧. if语句 顾名思义,该语句为判断语句,先来一个简单的示例 cars=[' ...
- python数值类型的操作_Python学习笔记,数值类型及操作
数值类型及操作 int类型数值大小不限: 整数的进制 1,整数类型正常为10进制 2,开头加0b or 0B 为二进制 3,加0o or 0O 为8进制 4,加0x 为16进制 浮点运算中存在不确定尾 ...
- python中sn的意思_python学习笔记
学习资料:<简明 Python 教程.pdf>Python是一种简单易学,功能强大的编程语言,它有高效率的高层数据结构,简单而有效地实现面向对象编程. 特点:1.简单 2.易学 3.开源, ...
- python读取文件路径格式_Python学习笔记读写文件之文件与文件路径
随笔记录方便自己和同路人查阅. #------------------------------------------------我是可耻的分割线--------------------------- ...
- python写完程序保存_Python学习笔记——文件处理
1.文件路径 1.1 不同系统环境下的路径 1.2 当前工作目录 1.3 绝对路径和相对路径 1.4 新建文件夹-- os.makedirs() 2.文件的读写 2.1 打开文件 2.2 读写文件 3 ...
- python的解释提示符为_python学习笔记01--基础
一.解释型语言 python是一门解释型语言,这意味着: l编写过后的代码不用编译连接即可运行,节约调试时间 lpython的解释器在大多数系统中都有很好实现,所以编写的代码可以运行在任何系统中 但同 ...
最新文章
- goland/go语言项目--本地包的导入(将项目添加至GOPATH中)(基于macOS)
- angular学习笔记(十三)
- 解决Android中无法搜索联系人的问题
- bcm943602cs蓝牙用不了_原来手机的蓝牙功能这么强大!除了连接耳机,还有这六大实用功能...
- java8-4 多态的练习以及题目
- matlab 数值格式转换,Matlab字符串转换及数值格式转换
- DIV相对于父DIV底部对齐的实现方法-Div+CSS教程
- html z-dext优先级顺序,$ext{1D/1D}$ 动态规划的三种优化
- Linux获取文件信息
- 入门排序(冒泡、选择、直接)
- 图像Radon变换与傅里叶变换(matlab)
- 闲鱼双11端侧实践总结
- 不用编写程序代码,送你一个爬虫程序批量采集猫眼电影票房数据
- Laravel数据快速填充
- HDU 6441 Find Integer 【费马大定理】
- Elasticsearch许可证过期导致ES用不了的问题
- 设计模式之中介者模式---Mediator Pattern
- 《深入理解Java虚拟机》第 3 版里面到底多了哪些知识点?本文竟然得到了本书作者的认可!
- uniapp使用Vant ui
- 服务器和应用系统迁移方案
热门文章
- 根据前一个元素的check状态决定其他元素disable
- Oracle索引扫描方式
- 三国演义人物出场统计代码含义_Python分析《三国演义》人物出场次数,孔明第二,赵云第五...
- RabbitMQ-Failed to check/redeclare auto-delete queue(s).
- es创建索引库报错 :Types cannot be provided in put mapping requests, unless the include_type_na
- IDEA上传本地项目到SVN
- linux 查看软连接的源头,linux 软连接怎么查看原始地址
- linux非编工作站,高清EDIUS非编网络系统建设 在线非编系统
- c语言程序100例第4题 参考了参考答案
- 服务器与普通电脑的区别?