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获取文件版本信息、公司名和产品名的方法
Oct 05 Python
python通过colorama模块在控制台输出彩色文字的方法
Mar 19 Python
python网络爬虫学习笔记(1)
Apr 09 Python
Python WSGI的深入理解
Aug 01 Python
python 堆和优先队列的使用详解
Mar 05 Python
python-django中的APPEND_SLASH实现方法
Jun 21 Python
使用Python的turtle模块画国旗
Sep 24 Python
浅谈python元素如何去重,去重后如何保持原来元素的顺序不变
Feb 28 Python
jupyter notebook 实现matplotlib图动态刷新
Apr 22 Python
Python 爬虫性能相关总结
Aug 03 Python
Python趣味挑战之用pygame实现简单的金币旋转效果
May 31 Python
pycharm安装深度学习pytorch的d2l包失败问题解决
Mar 25 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和MySql来与ODBC数据连接
2006/10/09 PHP
PHP入门学习的几个不错的实例代码
2008/07/13 PHP
Laravel框架路由配置总结、设置技巧大全
2014/09/03 PHP
PHP MPDF中文乱码的解决方式
2015/12/08 PHP
IE和Firefox下event事件杂谈
2009/12/18 Javascript
jquery 日期分离成年月日的代码
2010/05/14 Javascript
jQuery插件datepicker 日期连续选择
2015/06/12 Javascript
jQuery+AJAX实现无刷新下拉加载更多
2015/07/03 Javascript
Jquery和JS获取ul中li标签的实现方法
2016/06/02 Javascript
JS+CSS3实现超炫的散列画廊特效
2016/07/16 Javascript
JavaScript学习笔记--常用的互动方法
2016/12/07 Javascript
NodeJS仿WebApi路由示例
2017/02/28 NodeJs
javascript 正则表达式分组、断言详解
2017/04/20 Javascript
angular动态删除ng-repaeat添加的dom节点的方法
2017/07/20 Javascript
jQuery实现简单日期格式化功能示例
2017/09/19 jQuery
js 获取json数组里面数组的长度实例
2017/10/31 Javascript
vue.js 双层嵌套for遍历的方法详解, 类似php foreach()
2018/09/07 Javascript
nodejs aes 加解密实例
2018/10/10 NodeJs
大转盘抽奖小程序版 转盘抽奖网页版
2020/04/16 Javascript
JavaScript Window窗口对象属性和使用方法
2020/01/19 Javascript
vue样式穿透 ::v-deep的具体使用
2020/06/04 Javascript
用Python编写一个简单的俄罗斯方块游戏的教程
2015/04/03 Python
对Python 文件夹遍历和文件查找的实例讲解
2018/04/26 Python
python: 自动安装缺失库文件的方法
2018/10/22 Python
python使用if语句实现一个猜拳游戏详解
2019/08/27 Python
pycharm中leetcode插件使用图文详解
2020/12/07 Python
深入理解HTML5定时器requestAnimationFrame的使用
2018/12/12 HTML / CSS
TripAdvisor越南:全球领先的旅游网站
2017/09/21 全球购物
英国现代、当代和设计师家具店:Furntastic
2020/07/18 全球购物
PHP面试题集
2016/12/18 面试题
《口技》教学反思
2014/02/21 职场文书
职业生涯规划书前言
2014/04/15 职场文书
检察院起诉意见书
2015/05/20 职场文书
入党申请书怎么写?
2019/06/11 职场文书
浅谈mysql返回Boolean类型的几种情况
2021/06/04 MySQL
Go语言空白表示符_的实例用法
2021/07/04 Golang