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计算三角函数之acos()方法的使用
May 15 Python
wxPython定时器wx.Timer简单应用实例
Jun 03 Python
python搭建虚拟环境的步骤详解
Sep 27 Python
使用python编写简单的小程序编译成exe跑在win10上
Jan 15 Python
Python实现的文本对比报告生成工具示例
May 22 Python
Python-while 计算100以内奇数和的方法
Jun 11 Python
python nohup 实现远程运行不宕机操作
Apr 16 Python
Python基于Twilio及腾讯云实现国际国内短信接口
Jun 18 Python
Python列表推导式实现代码实例
Sep 09 Python
浅谈anaconda python 版本对应关系
Oct 07 Python
Python基于staticmethod装饰器标示静态方法
Oct 17 Python
python中的split、rsplit、splitlines用法说明
Oct 23 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
动易数据转成dedecms的php程序
2007/04/07 PHP
ajax在joomla中的原生态应用代码
2012/07/19 PHP
PHP时间类完整实例(非常实用)
2015/12/25 PHP
php防止表单重复提交实例讲解
2019/02/11 PHP
Javascript之文件操作
2007/03/07 Javascript
优化网页之快速的呈现我们的网页
2007/06/29 Javascript
Jquery升级新版本后选择器的语法问题
2010/06/02 Javascript
JQuery 1.3.2以上版本中出现pareseerror错误的解决方法
2011/01/11 Javascript
js自动查找select下拉的菜单并选择(示例代码)
2014/02/26 Javascript
js中使用replace方法完成某个字符的转换
2014/08/20 Javascript
WEB前端实现裁剪上传图片功能
2016/10/17 Javascript
vue实现可增删查改的成绩单
2016/10/27 Javascript
Angular 2 ngForm中的ngModel、[ngModel]和[(ngModel)]的写法
2017/06/29 Javascript
浅谈在koa2中实现页面渲染的全局数据
2017/10/09 Javascript
微信小程序实现的动态设置导航栏标题功能示例
2019/01/31 Javascript
jQuery实现经典的网页3D轮播图封装功能【附源码下载】
2019/02/15 jQuery
详解javascript设计模式三:代理模式
2019/03/25 Javascript
基于webpack4+vue-cli3项目实现换肤功能
2019/07/17 Javascript
[00:09]DOTA2新版本PA至宝特效动作展示
2014/11/19 DOTA
python如何通过protobuf实现rpc
2016/03/06 Python
Python 提取dict转换为xml/json/table并输出的实现代码
2016/08/28 Python
Python获取Redis所有Key以及内容的方法
2019/02/19 Python
啥是佩奇?使用Python自动绘画小猪佩奇的代码实例
2019/02/20 Python
Python画图实现同一结点多个柱状图的示例
2019/07/07 Python
CentOS7下安装python3.6.8的教程详解
2020/01/03 Python
Pytorch 实现focal_loss 多类别和二分类示例
2020/01/14 Python
bareMinerals官网:矿物质化妆品和护肤品
2018/02/04 全球购物
LN-CC中国:高端男装和女装的奢侈时尚目的地
2019/09/14 全球购物
潘多拉珠宝俄罗斯官方网上商店:PANDORA俄罗斯
2020/09/22 全球购物
JavaScript获取当前url根目录(路径)
2014/02/19 面试题
大学毕业自我鉴定范文
2014/02/03 职场文书
党员个人对照检查材料思想汇报
2014/09/16 职场文书
街道党风廉政建设调研报告
2015/01/01 职场文书
教导处教学工作总结
2015/08/12 职场文书
教师听课学习心得体会
2016/01/15 职场文书
pytorch中的torch.nn.Conv2d()函数图文详解
2022/02/28 Python