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() 函数和 split() 函数的详解及实例
Feb 03 Python
Python处理XML格式数据的方法详解
Mar 21 Python
python爬虫之urllib3的使用示例
Jul 09 Python
使用python将图片按标签分入不同文件夹的方法
Dec 08 Python
解决在Python编辑器pycharm中程序run正常debug错误的问题
Jan 17 Python
解决pycharm 远程调试 上传 helpers 卡住的问题
Jun 27 Python
python使用flask与js进行前后台交互的例子
Jul 19 Python
在OpenCV里实现条码区域识别的方法示例
Dec 04 Python
解决Keras中CNN输入维度报错问题
Jun 29 Python
解决keras GAN训练是loss不发生变化,accuracy一直为0.5的问题
Jul 02 Python
Python 创建守护进程的示例
Sep 29 Python
python 基于opencv 绘制图像轮廓
Dec 11 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简单的留言板与回复功能具体实现
2014/02/19 PHP
php使用codebase生成随机数
2014/03/25 PHP
PHP中trim()函数简单使用指南
2015/04/16 PHP
PHP生成图表pChart的示例解析
2020/07/31 PHP
JavaScript访问样式表代码
2010/10/15 Javascript
iframe 父窗口和子窗口相互的调用方法集锦
2010/12/15 Javascript
简短几句jquery代码的实现一个图片向上滚动切换
2011/09/02 Javascript
浅析JQuery获取和设置Select选项的常用方法总结
2013/07/04 Javascript
extjs render 用法介绍
2013/09/11 Javascript
jquery $.each 和for怎么跳出循环终止本次循环
2013/09/27 Javascript
js为空或不是对象问题的快速解决方法
2013/12/11 Javascript
js实现jquery的offset()方法实例
2015/01/10 Javascript
通过Jquery.cookie.js实现展示浏览网页的历史记录超管用
2015/10/23 Javascript
分享一些常用的jQuery动画事件和动画函数
2015/11/27 Javascript
一个Vue视频媒体多段裁剪组件的实现示例
2018/08/09 Javascript
解决Vue中引入swiper,在数据渲染的时候,发生不滑动的问题
2018/09/27 Javascript
vue.js指令v-for使用以及下标索引的获取
2019/01/31 Javascript
使用layer.msg 时间设置不起作用的解决方法
2019/09/12 Javascript
Vue+element-ui添加自定义右键菜单的方法示例
2020/12/08 Vue.js
在windows下使用python进行串口通讯的方法
2019/07/02 Python
Python文件时间操作步骤代码详解
2020/04/13 Python
pycharm 使用anaconda为默认环境的操作
2021/02/05 Python
HTML5的download属性详细介绍和使用实例
2014/04/23 HTML / CSS
购买美国制造的相框和画框架:Picture Frames
2018/08/14 全球购物
365 Tickets英国:全球景点门票
2019/07/06 全球购物
俄罗斯在线服装店:STOLNIK
2021/03/07 全球购物
GWebs公司笔试题
2012/05/04 面试题
工商管理本科毕业生求职信范文
2013/10/05 职场文书
旅游管理毕业生自荐信范文
2014/03/19 职场文书
助人为乐道德模范事迹材料
2014/08/16 职场文书
四风问题对照检查整改措施思想报告
2014/10/05 职场文书
工作失职检讨书(精华篇)
2014/10/15 职场文书
谢师宴邀请函
2015/02/02 职场文书
财务稽核岗位职责
2015/04/13 职场文书
python tkinter模块的简单使用
2021/04/07 Python
vue引入Excel表格插件的方法
2021/04/28 Vue.js