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做网页
Nov 04 Python
Python3基础之list列表实例解析
Aug 13 Python
python检测远程udp端口是否打开的方法
Mar 14 Python
Python与人工神经网络:使用神经网络识别手写图像介绍
Dec 19 Python
Python编写一个优美的下载器
Apr 15 Python
python如何获取当前文件夹下所有文件名详解
Jan 25 Python
python numpy之np.random的随机数函数使用介绍
Oct 06 Python
python 并发下载器实现方法示例
Nov 22 Python
Django自带的加密算法及加密模块详解
Dec 03 Python
python 比较2张图片的相似度的方法示例
Dec 18 Python
python -v 报错问题的解决方法
Sep 15 Python
python中subplot大小的设置步骤
Jun 28 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中json_encode、json_decode与serialize、unserialize的性能测试分析
2010/06/09 PHP
php中ob函数缓冲机制深入理解
2015/08/03 PHP
PHP实现GIF图片验证码
2015/11/04 PHP
javascript 变量作用域 代码分析
2009/06/26 Javascript
javascript new 需不需要继续使用
2009/07/02 Javascript
Jquery 滑入滑出效果实现代码
2010/03/27 Javascript
aspx中利用js实现确认删除代码
2010/07/22 Javascript
改进版通过Json对象实现深复制的方法
2012/10/24 Javascript
javascript实现促销倒计时+fixed固定在底部
2013/09/18 Javascript
做好七件事帮你提升jQuery的性能
2014/02/06 Javascript
javascript检测浏览器的缩放状态实现代码
2014/09/28 Javascript
JavaScript中获取高度和宽度函数总结
2014/10/08 Javascript
jQuery的animate函数实现图文切换动画效果
2015/05/03 Javascript
AngularJS 最常用的功能汇总
2016/02/17 Javascript
基于jQuery实现火焰灯效果导航菜单
2017/01/04 Javascript
深入学习 JavaScript中的函数调用
2017/03/23 Javascript
JavaScript函数柯里化原理与用法分析
2017/03/31 Javascript
js事件机制----捕获与冒泡机制实例分析
2020/05/22 Javascript
js判断鼠标移入移出方向的方法
2020/06/24 Javascript
[01:06:54]DOTA2-DPC中国联赛 正赛 RNG vs Dragon BO3 第一场 1月24日
2021/03/11 DOTA
Python psutil模块简单使用实例
2015/04/28 Python
Python实现批量修改文件名实例
2015/07/08 Python
Python Django使用forms来实现评论功能
2016/08/17 Python
Python实现PS滤镜碎片特效功能示例
2018/01/24 Python
Python Numpy计算各类距离的方法
2019/07/05 Python
python 表格打印代码实例解析
2019/10/12 Python
Django REST Swagger实现指定api参数
2020/07/07 Python
Python自动化测试中yaml文件读取操作
2020/08/20 Python
css3实现书本翻页效果的示例代码
2021/03/08 HTML / CSS
html5+css3进度条倒计时动画特效代码【推荐】
2016/03/08 HTML / CSS
Nº21官方在线商店:numeroventuno.com
2019/09/26 全球购物
Orlebar Brown官网:设计师泳裤和泳装
2020/12/08 全球购物
什么时候用assert
2015/05/08 面试题
单位授权委托书范本
2014/09/26 职场文书
公司食堂管理制度
2015/08/05 职场文书
《中华上下五千年》读后感3篇
2019/11/29 职场文书