一、二叉树子节点个数

#初始化叶子节点和根结点
class treeNode():
def __init__(self,data=-1,left=None,right=None):
self.data=data
self.left=left
self.right=right
def __str__(self):
return str(self.data)
#递归计算包括根节点在内的所有节点个数
def sd_Node(root):
if root is None:
return 0
else:
left=sd_Node(root.left)
right=sd_Node(root.right)
return left+right+1
#测试
if __name__ == '__main__':
root = treeNode(1,
treeNode(2, treeNode(9), treeNode(4)),
treeNode(5))
sd=sd_Node(root)
print(sd)

二、二叉树深度

 #初始化叶子节点和根结点
class treeNode():
def __init__(self,data,left=None,right=None):
self.data=data
self.left=left
self.right=right
def __str__(self):
return str(self.data)
#遍历二叉树的左右分支,比较大小,返回最大的值,即为深度
def sd_Node(root):
#判断是否为None
if root is None:
return 0
else:
#左分支深度
left=sd_Node(root.left)+1
#右分支深度
right=sd_Node(root.right)+1
#比较,返回
if left > right:
return left
else:
return right
if __name__ == '__main__':
root = treeNode(1,treeNode(1),treeNode(1))
sd=sd_Node(root)
print(sd)

三、二叉树反转

 #初始化叶子节点和根结点
class treeNode():
def __init__(self,data,left=None,right=None):
self.data=data
self.left=left
self.right=right
def __str__(self):
return str(self.data)
#递归反转左右节点
def fz_tree(root):
if root is None:
return
else:
root.left,root.right=fz_tree(root.right),fz_tree(root.left)
return root
#前序遍历输出
def s_print(root):
if root:
print(root.data)
s_print(root.left)
s_print(root.right)
#测试
if __name__ == '__main__':
root = treeNode(1,
treeNode(2,treeNode(3),treeNode(4)),
treeNode(5,treeNode(6)))
rot=fz_tree(root)
s_print(rot)

python----二叉树实现及相关操作的更多相关文章

  1. 026.Python面向对象类的相关操作以及对象和类的删除操作

    类的相关操作 定义的类访问共有成员的成员和方法 定义的类动态添加公有成员的属性和方法 定义的类删除公有成员的属性和方法 1 定义一个基本的类 #定义一个类 class Plane(): #添加一个共有 ...

  2. 011.Python的列表的相关操作

    一 列表的相关操作 1.1  列表的拼接 lst1 = [1,2,3] lst2 = [4,5,6] res = lst1 + lst2 print(res) 执行 [root@node10 pyth ...

  3. python对数据类型的相关操作

    一.int的相关操作 int只有一个相关操作,bit_length()   用于计算一个数字的二进制长度 二.bool的相关操作 1.把数字转换成bool,除了0,返回的都是True a = 10 p ...

  4. Python 基础之集合相关操作与函数和字典相关函数

    一:集合相关操作与相关函数 1.集合相关操作(交叉并补) (1)intersection() 交集 set1 = {"one","two","thre ...

  5. Json概述以及python对json的相关操作

    JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式.易于人阅读和编写.同时也易于机器解析和生成.它基于JavaScript Programming Langu ...

  6. Json概述以及python对json的相关操作(转)

    什么是json: JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式.易于人阅读和编写.同时也易于机器解析和生成.它基于JavaScript Programm ...

  7. python对json的相关操作

    什么是json: JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式.易于人阅读和编写.同时也易于机器解析和生成.它基于JavaScript Programm ...

  8. Json概述以及python对json的相关操作《转》

    什么是json: JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式.易于人阅读和编写.同时也易于机器解析和生成.它基于JavaScript Programm ...

  9. [转]python对json的相关操作

    json官方说明参见:http://json.org/ Python操作json的标准api库参考:http://docs.python.org/library/json.html 对简单数据类型的e ...

  10. 初识python 字符串 列表 字典相关操作

    python基础(一): 运算符: 算术运算: 除了基本的+ - * / 以外,还需要知道 :  // 为取整除 返回的市商的整数部分 例如: 9 // 2  ---> 4  , 9.0 //  ...

随机推荐

  1. 混合app开发,h5页面调用ios原生APP的接口

    混合APP开发中,前端开发H5页面,不免会把兼容性拉进来,在做页面的兼容性同事,会与原生app产生一些数据交互: 混合APP开发,安卓的兼容性倒是好说,安卓使用是chrome浏览器核心,已经很好兼容H ...

  2. 16.3 authguard 通过routing path控制显示URL 通过ngif显示和隐藏

    显示或者隐藏component 通常情况下 我们的做法是把它做成class 以上两步完成,我们就可以用service了,再此之前,我们先 这样弄完以后 . 非登录状态键入上面地址会自动返回下面的地址 ...

  3. git初使用总结感悟

    ####首先说说git在工作中的一般流程1.首先就是进入新公司之后,要了解公司用的是什么代码托管,比如gitlab或者github(私有库花钱) 2.找技术同时把你加入到工作项目组并给你权限(一般都是 ...

  4. HttpWatch Professional Edition 7.2.13下载含( license.lic )

    下载地址: http://download.httpwatch.com/httpwatchpro.exe httpwatch.lic     # program.     #     # You ca ...

  5. hive 解jason字符串

    json 字符串为: 字段名为: json {"appId":36222,"deviceId":"12536521-7b3d-41f6-9c09-fd ...

  6. ftp 传输问题

    服务器配置ftp站点后,客户端机器可以下载但不能上传文件? 今天从公网的服务器连接本地内网的FTP server copy文件时,系统老是提示227 Entering Passive Mode (xx ...

  7. vue --轮播图

    轮播图,可以使用mint-ui中的swipe HTML: <Swipe :auto="4000"> <SwipeItem v-for="item in ...

  8. 支付宝支付Java代码

    支付宝调用流程 开发前的准备工作 配置应用网关 应用网关里面填写的值就是商户后台的异步回调地址.也就是在支付宝付完款之后,由支付宝调用商户,便于商户验证订单各信息和更新订单状态 授权回调地址 授权回调 ...

  9. spring boot springmvc视图

    pring boot 在springmvc的视图解析器方面就默认集成了ContentNegotiatingViewResolver和BeanNameViewResolver,在视图引擎上就已经集成自动 ...

  10. Signed Distance Field Technique

    [Distance Field Technique] 一种小纹理高清放大的技术. A distance field is generated from a high resolution image, ...