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实现异步回调机制代码分享
Jan 10 Python
python基础教程之基本数据类型和变量声明介绍
Aug 29 Python
利用python爬取散文网的文章实例教程
Jun 18 Python
Python使用struct处理二进制的实例详解
Sep 11 Python
flask框架路由常用定义方式总结
Jul 23 Python
python设置环境变量的作用整理
Feb 17 Python
Python持续监听文件变化代码实例
Jul 22 Python
python中取绝对值简单方法总结
Jul 24 Python
详解python方法之绑定方法与非绑定方法
Aug 17 Python
python将图片转为矢量图的方法步骤
Mar 30 Python
python urllib库的使用详解
Apr 13 Python
Pytorch 如何实现常用正则化
May 27 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
Oracle 常见问题解答
2006/10/09 PHP
那些年一起学习的PHP(三)
2012/03/22 PHP
php中的mongodb select常用操作代码示例
2014/09/06 PHP
PHP采用get获取url汉字出现乱码的解决方法
2014/11/13 PHP
php递归函数怎么用才有效
2018/02/24 PHP
javascript实现上传图片前的预览(TX的面试题)
2007/08/20 Javascript
JavaScript中的History历史对象
2008/01/16 Javascript
基于jQuery的输入框在光标位置插入内容, 并选中
2011/10/29 Javascript
推荐 21 款优秀的高性能 Node.js 开发框架
2014/08/18 Javascript
textarea不能通过maxlength属性来限制字数的解决方法
2014/09/01 Javascript
浅析javascript中的DOM
2015/03/01 Javascript
js实现简单选项卡与自动切换效果的方法
2015/04/10 Javascript
js带前后翻页的图片切换效果代码分享
2015/09/08 Javascript
JS截取字符串实例详解
2015/11/24 Javascript
浅析JavaScript中的array数组类型系统
2016/07/18 Javascript
微信小程序 免费SSL证书https、TLS版本问题的解决办法
2016/12/14 Javascript
vue插件实现v-model功能
2018/09/10 Javascript
详解vuex的简单todolist例子
2019/07/14 Javascript
python采用django框架实现支付宝即时到帐接口
2016/05/17 Python
centos 安装python3.6环境并配置虚拟环境的详细教程
2018/02/22 Python
Python定时任务APScheduler的实例实例详解
2019/07/22 Python
python opencv 简单阈值算法的实现
2019/08/04 Python
python plotly画柱状图代码实例
2019/12/13 Python
Python制作简易版小工具之计算天数的实现思路
2020/02/13 Python
python有几个版本
2020/06/17 Python
Python 中如何写注释
2020/08/28 Python
用HTML5制作一个简单的弹力球游戏
2015/05/12 HTML / CSS
美国学校用品、教室和教学商店:Discount School Supply
2018/04/04 全球购物
泰国综合购物网站:Lazada泰国
2018/04/09 全球购物
Paper Cape官网:美国婴儿和儿童服装品牌
2019/11/02 全球购物
高级工程师英文求职信
2014/03/19 职场文书
质量标语大全
2014/06/12 职场文书
责任书格式范文
2014/07/28 职场文书
职工小家建设活动方案
2014/08/25 职场文书
2014年医院后勤工作总结
2014/12/06 职场文书
python如何读取.mtx文件
2021/04/22 Python