python3实现在二叉树中找出和为某一值的所有路径(推荐)


Posted in Python onDecember 26, 2019

请写一个程序创建一棵二叉树,并按照一定规则,输出二叉树根节点到叶子节点的路径。

规则如下:

1、从最顶端的根结点,到最下面的叶子节点,计算路径通过的所有节点的和,如果与设置的某一值的相同,那么输出这条路径上的所有节点。

2、从根节点遍历树时,请请按照左到右遍历,即优先访问左子树的节点。

二叉树创建规则:从上到下一层一层的,按照从左到右的顺序进行构造

输入"10,5,12,4,7"值,构造的树如下:

1) 10
2) 10
      /
    5

3) 10
       /\
     5 12
4) 10
        /\
      5 12
     /
   4

5) 10
        /\
      5 12
      /\
     4 7

针对上面的二叉树,如果当前我们设置的“路径和”为19,那么输出结果为:
10,5,4

如果有多个路径,按到左到右的顺序遍历生成的结果每行显示一个显示。例如如果当前我们设置的“路径和”为22,那么

输出结果为:

10,5,7
10,12

如果没有找到路径和为设置的值的路径,输出error。

三、输入:

输入整数N---路径和
一行字符串,多个正整数,之间用","隔开

四、输出: 满足条件的二叉树路径

五、样例输入:

22
10,5,12,4,7

六、样例输出:

10,5,7
10,12

demo:

class Node(object):
  def __init__(self, x):
   self.val = x
   self.left = None
   self.right = None
class Tree(object):
 lt = [] # 依次存放左右孩子未满的节点
 def __init__(self):
   self.root = None
 def add(self, number):
   node = Node(number) # 将输入的数字节点化,使其具有左右孩子的属性
   if self.root == None:
     self.root = node
     Tree.lt.append(self.root)
   else:
     while True:
       point = Tree.lt[0] # 依次对左右孩子未满的节点分配孩子
       if point.left ==None:
         point.left = node
         Tree.lt.append(point.left) # 该节点后面作为父节点也是未满的,也要加入到列表中。
         return
       elif point.right ==None:
         point.right = node
         Tree.lt.append(point.right) # 与左孩子同理
         Tree.lt.pop(0) # 表示该节点已拥有左右孩子,从未满列表中去除
         return
class Solution:
 def __init__(self):
   self.results = []
 def RecursionFindPath(self, root, expectNumber, result):
   result.append(root.val)
   if root.left == None and root.right == None and sum(result) == expectNumber:
     self.results.append(result)
   temp = result[:]
   if root.left:
     self.RecursionFindPath(root.left, expectNumber, result)
   result = temp[:]
   if root.right:
     self.RecursionFindPath(root.right, expectNumber, result)
 def FindPath(self, root, expectNumber):
   if root == None:
     return []
   self.RecursionFindPath(root, expectNumber, [])
   self.results = sorted(self.results, key=len, reverse=True)
   return self.results
if __name__ =='__main__':
 t = Tree() # 二叉树类的实例化
 L = [10, 5, 12, 4, 7]
 for i in L:
   t.add(i)
 expectNum = 22
 print(Solution().FindPath(t.root, expectNum))

输出样例:

python3实现在二叉树中找出和为某一值的所有路径(推荐)

总结

以上所述是小编给大家介绍的python3实现在二叉树中找出和为某一值的所有路径,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

Python 相关文章推荐
python网络编程学习笔记(四):域名系统
Jun 09 Python
Python中的pass语句使用方法讲解
May 14 Python
python实现linux下使用xcopy的方法
Jun 28 Python
python脚本实现数据导出excel格式的简单方法(推荐)
Dec 30 Python
解决Tensorflow使用pip安装后没有model目录的问题
Jun 13 Python
详解python 注释、变量、类型
Aug 10 Python
PyQt5实现QLineEdit添加clicked信号的方法
Jun 25 Python
python使用递归的方式建立二叉树
Jul 03 Python
Python实现Word表格转成Excel表格的示例代码
Apr 16 Python
Python如何获取文件路径/目录
Sep 22 Python
五分钟学会怎么用python做一个简单的贪吃蛇
Jan 12 Python
详解Python中的for循环
Apr 30 Python
Pytorch中Tensor与各种图像格式的相互转化详解
Dec 26 #Python
基于h5py的使用及数据封装代码
Dec 26 #Python
python深copy和浅copy区别对比解析
Dec 26 #Python
详解python opencv、scikit-image和PIL图像处理库比较
Dec 26 #Python
torch 中各种图像格式转换的实现方法
Dec 26 #Python
python两个_多个字典合并相加的实例代码
Dec 26 #Python
Python时间差中seconds和total_seconds的区别详解
Dec 26 #Python
You might like
PHP编实现程动态图像的创建代码
2008/09/28 PHP
如何使用PHP计算上一个月的今天
2013/05/23 PHP
php strrpos()与strripos()函数
2013/08/31 PHP
php文件上传的例子及参数详解
2013/12/12 PHP
php中in_array函数用法分析
2014/11/15 PHP
利用js获取服务器时间的两个简单方法
2010/01/08 Javascript
node爬取微博的数据的简单封装库nodeweibo使用指南
2015/01/02 Javascript
jQuery+html5实现div弹出层并遮罩背景
2015/04/15 Javascript
jQuery层动画定位滑动效果的方法
2015/04/30 Javascript
纯HTML5制作围住神经猫游戏-附源码下载
2015/08/23 Javascript
带有定位当前位置的百度地图前端web api实例代码
2016/06/21 Javascript
日期时间范围选择插件:daterangepicker使用总结(必看篇)
2017/09/14 Javascript
使用axios实现上传图片进度条功能
2017/12/21 Javascript
zTree 树插件实现全国五级地区点击后加载的示例
2018/02/05 Javascript
你点的 ES6一些小技巧,请查收
2018/04/25 Javascript
新手如何快速理解js异步编程
2019/06/24 Javascript
layui+SSM的数据表的增删改实例(利用弹框添加、修改)
2019/09/27 Javascript
jquery传参及获取方式(两种方式)
2020/02/13 jQuery
使用Node.js实现base64和png文件相互转换的方法
2020/03/11 Javascript
JavaScript隐式类型转换代码实例
2020/05/29 Javascript
简单了解vue 插值表达式Mustache
2020/07/22 Javascript
Vuex实现简单购物车
2021/01/10 Vue.js
python实现的用于搜索文件并进行内容替换的类实例
2015/06/28 Python
Python3计算三角形的面积代码
2017/12/18 Python
浅析python3字符串格式化format()函数的简单用法
2018/12/07 Python
python ddt数据驱动最简实例代码
2019/02/22 Python
Python读取配置文件(config.ini)以及写入配置文件
2020/04/08 Python
神经网络训练采用gpu设置的方式
2021/03/03 Python
基于DOM+CSS3实现OrgChart组织结构图插件
2016/03/02 HTML / CSS
美国山地自行车、露营、户外装备和服装购物网站:Aventuron
2018/05/05 全球购物
SIMON MILLER官网:洛杉矶的生活方式品牌
2020/10/19 全球购物
小学学雷锋活动总结
2014/04/25 职场文书
学生会个人总结范文
2015/02/15 职场文书
花木兰观后感
2015/06/10 职场文书
2015年高中班级工作总结
2015/07/21 职场文书
Window server中安装Redis的超详细教程
2021/11/17 Redis