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 strip()函数 介绍
May 24 Python
使用go和python递归删除.ds store文件的方法
Jan 22 Python
在Python中使用sort()方法进行排序的简单教程
May 21 Python
Ubuntu下使用Python实现游戏制作中的切分图片功能
Mar 30 Python
Python编写一个优美的下载器
Apr 15 Python
在Python中关于使用os模块遍历目录的实现方法
Jan 03 Python
python实现全盘扫描搜索功能的方法
Feb 14 Python
python3转换code128条形码的方法
Apr 17 Python
pyqt5 删除layout中的所有widget方法
Jun 25 Python
使用Python项目生成所有依赖包的清单方式
Jul 13 Python
基于Python的身份证验证识别和数据处理详解
Nov 14 Python
Python如何利用正则表达式爬取网页信息及图片
Apr 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
PHP在弹框中获取foreach中遍历的id值并传递给地址栏
2017/06/13 PHP
PHP生成推广海报的方法分享
2018/04/22 PHP
CI框架网页缓存简单用法分析
2018/12/26 PHP
PHP通过GD库实现验证码功能示例
2019/02/23 PHP
tp5(thinkPHP5框架)captcha验证码配置及验证操作示例
2019/05/28 PHP
不能再简单的无闪刷新验证码原理很简单
2007/11/05 Javascript
javascript之Partial Application学习
2013/01/10 Javascript
JS中的this变量的使用介绍
2013/10/21 Javascript
JavaScript函数获取事件源的小例子
2014/05/14 Javascript
jQuery技巧之让任何组件都支持类似DOM的事件管理
2016/04/05 Javascript
jQuery获取cookie值及删除cookie用法实例
2016/04/15 Javascript
JavaScript自定义文本框光标
2017/03/05 Javascript
js前端实现图片懒加载(lazyload)的两种方式
2017/04/24 Javascript
阿望教你用vue写扫雷小游戏
2020/01/20 Javascript
vue-video-player 断点续播的实现
2021/02/01 Vue.js
Python实现类似比特币的加密货币区块链的创建与交易实例
2018/03/20 Python
python中使用while循环的实例
2019/08/05 Python
python实现输入任意一个大写字母生成金字塔的示例
2019/10/27 Python
keras model.fit 解决validation_spilt=num 的问题
2020/06/19 Python
Python中用xlwt制作表格实例讲解
2020/11/05 Python
MoviePy常用剪辑类及Python视频剪辑自动化
2020/12/18 Python
详解CSS3+JS完美实现放大镜模式
2020/12/03 HTML / CSS
捷克鲜花配送:Florea.cz
2018/10/29 全球购物
奥地利票务门户网站:oeticket.com
2019/12/31 全球购物
Myprotein西班牙官网:欧洲第一大运动营养品牌
2020/02/24 全球购物
美国新娘礼品店:The Paisley Box
2020/09/08 全球购物
车间主管岗位职责
2013/11/14 职场文书
学校消防安全制度
2014/01/30 职场文书
工地标语大全
2014/06/18 职场文书
2014年幼儿园个人工作总结
2014/11/10 职场文书
优秀班主任事迹材料
2014/12/16 职场文书
结婚保证书
2015/01/16 职场文书
团代会闭幕词
2015/01/28 职场文书
Pytorch 实现变量类型转换
2021/05/17 Python
解决sql server 数据库,sa用户被锁定的问题
2021/06/11 SQL Server
Python如何利用pandas读取csv数据并绘图
2022/07/07 Python