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的Django框架中simple-todo工具的简单使用
May 30 Python
Python用Bottle轻量级框架进行Web开发
Jun 08 Python
Python文本相似性计算之编辑距离详解
Nov 28 Python
Python2实现的LED大数字显示效果示例
Sep 04 Python
python多进程提取处理大量文本的关键词方法
Jun 05 Python
Python实现读取SQLServer数据并插入到MongoDB数据库的方法示例
Jun 09 Python
Python 输出时去掉列表元组外面的方括号与圆括号的方法
Dec 24 Python
pytz格式化北京时间多出6分钟问题的解决方法
Jun 21 Python
详解基于python的多张不同宽高图片拼接成大图
Sep 26 Python
python实现输出一个序列的所有子序列示例
Nov 18 Python
python实现串口通信的示例代码
Feb 10 Python
Django DRF认证组件流程实现原理详解
Aug 17 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
ftp类(example.php)
2006/10/09 PHP
MySQL 日期时间函数常用总结
2012/06/12 PHP
php实现的Captcha验证码类实例
2014/09/22 PHP
彻底删除thinkphp3.1案例blog标签的方法
2014/12/05 PHP
Zend Framework教程之Autoloading用法详解
2016/03/08 PHP
JQERY limittext 插件0.2版(长内容限制显示)
2010/08/27 Javascript
DB.ASP 用Javascript写ASP很灵活很好用很easy
2011/07/31 Javascript
js实现二代身份证号码验证详解
2014/11/20 Javascript
JavaScript实现带播放列表的音乐播放器实例分享
2016/03/07 Javascript
URL的参数中有加号传值变为空格的问题(URL特殊字符)
2016/11/04 Javascript
微信小程序 122100版本更新问题解决方案
2016/12/22 Javascript
AngularJs定时器$interval 和 $timeout详解
2017/05/25 Javascript
示例vue 的keep-alive缓存功能的实现
2018/12/13 Javascript
mpvue全局引入sass文件的方法步骤
2019/03/06 Javascript
Javascript文本框脚本实现方法解析
2020/10/30 Javascript
[06:04]DOTA2英雄梦之声Vol19卓尔游侠
2014/06/20 DOTA
比较详细Python正则表达式操作指南(re使用)
2008/09/06 Python
初学Python函数的笔记整理
2015/04/07 Python
python的paramiko模块实现远程控制和传输示例
2017/10/13 Python
python编写弹球游戏的实现代码
2018/03/12 Python
浅谈Django的缓存机制
2018/08/23 Python
Python字符串逆序输出的实例讲解
2019/02/16 Python
django项目简单调取百度翻译接口的方法
2019/08/06 Python
python爬取Ajax动态加载网页过程解析
2019/09/05 Python
keras自定义回调函数查看训练的loss和accuracy方式
2020/05/23 Python
用HTML5制作烟火效果的教程
2015/05/12 HTML / CSS
Lookfantastic阿联酋官网:英国知名美妆护肤购物网站
2020/05/26 全球购物
擅自离岗检讨书
2014/02/11 职场文书
建筑工程专业大学生求职信
2014/04/23 职场文书
设计顾问服务计划书
2014/05/04 职场文书
公司年终奖分配方案
2014/06/16 职场文书
英语课前三分钟演讲稿
2014/08/19 职场文书
小学科学教学计划
2015/01/21 职场文书
教您:房贷工资收入证明应该怎么写?
2019/08/19 职场文书
演讲稿之感恩老师(三篇范文)
2019/09/06 职场文书
抖音动画片,皮皮虾,《治愈系》动画在用这首REMIX作为背景音乐,Anak ,The last world with you完整版
2022/03/16 杂记