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定时执行之Timer用法示例
May 27 Python
Django 根据数据模型models创建数据表的实例
May 27 Python
Python应用库大全总结
May 30 Python
python 实现A*算法的示例代码
Aug 13 Python
解决pycharm运行程序出现卡住scanning files to index索引的问题
Jun 27 Python
python与C、C++混编的四种方式(小结)
Jul 15 Python
Python中模块(Module)和包(Package)的区别详解
Aug 07 Python
使用Python的turtle模块画国旗
Sep 24 Python
基于Python实现人脸自动戴口罩系统
Feb 06 Python
Windows 平台做 Python 开发的最佳组合(推荐)
Jul 27 Python
Python中openpyxl实现vlookup函数的实例
Oct 28 Python
Python 多线程处理任务实例
Nov 07 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中判断变量为空的几种方法小结
2013/11/12 PHP
Thinkphp微信公众号支付接口
2016/08/04 PHP
PHP排序算法之堆排序(Heap Sort)实例详解
2018/04/21 PHP
uploadify 3.0 详细使用说明
2012/06/18 Javascript
解决ExtJS在chrome或火狐中正常显示在ie中不显示的浏览器兼容问题
2013/01/11 Javascript
Jquery实现兼容各大浏览器的Enter回车切换输入焦点的方法
2014/09/01 Javascript
JS运动框架之分享侧边栏动画实例
2015/03/03 Javascript
javascript判断复选框是否选中的方法
2015/10/16 Javascript
基于JavaScript如何实现私有成员的语法特征及私有成员的实现方式
2015/10/28 Javascript
深入理解jQuery 事件处理
2016/06/14 Javascript
JavaScript跨域调用基于JSON的RESTful API
2016/07/09 Javascript
浅析Node.js:DNS模块的使用
2016/11/23 Javascript
微信小程序 详解页面跳转与返回并回传数据
2017/02/13 Javascript
JavaScript实现栈结构Stack过程详解
2020/03/07 Javascript
简单了解JavaScript作用域
2020/07/31 Javascript
浅谈vue-props的default写不写有什么区别
2020/08/09 Javascript
[05:49]2014DOTA2TI4正赛第二日综述 昔日冠军纷纷落马 VG LGD占尽先机
2014/07/20 DOTA
在Windows8上的搭建Python和Django环境
2014/07/03 Python
用python的requests第三方模块抓取王者荣耀所有英雄的皮肤实例
2017/12/14 Python
python实现蒙特卡罗方法教程
2019/01/28 Python
如何基于线程池提升request模块效率
2020/04/18 Python
Mysql数据库反向生成Django里面的models指令方式
2020/05/18 Python
Python如何对XML 解析
2020/06/28 Python
使用Python操作MySQL的小技巧
2020/09/10 Python
HTML5 播放 RTSP 视频的实例代码
2019/07/29 HTML / CSS
CLR与IL分别是什么含义
2016/08/23 面试题
微观物理专业自荐信
2014/01/26 职场文书
DIY手工制作经营店创业计划书
2014/02/01 职场文书
毕业实习评语
2014/02/10 职场文书
优秀会计求职信
2014/07/04 职场文书
弘扬焦裕禄精神走群众路线思想汇报
2014/09/12 职场文书
四风问题原因分析及整改措施
2014/10/24 职场文书
副总经理岗位职责范本
2015/04/08 职场文书
婚礼伴郎致辞
2015/07/28 职场文书
参观监狱警示教育心得体会
2016/01/15 职场文书
浅谈GO中的Channel以及死锁的造成
2022/03/18 Golang