请写一个程序创建一棵二叉树,并按照一定规则,输出二叉树根节点到叶子节点的路径。

规则如下:

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实现在二叉树中找出和为某一值的所有路径,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!

如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

二叉树路径和最大python_python3实现在二叉树中找出和为某一值的所有路径(推荐)...相关推荐

  1. 微软面试题系列(四):在二元树中找出和为某一值的所有路径

    有了第一题作为基础,这一题写起来也相当简单.只是搜索的时候呢,可以剪枝一下.这个是搜索的技巧,用多了就自然有这个习惯了! 建树依然建立二元查找树,然后用深搜,用一个path数组把结点的值存储起来.用深 ...

  2. 在二元树中找出和为某一值的所有路径

    具体实现代码如下: BSTree.h具体内容: #ifndef _BSTREE_H_ #define _BSTREE_H_ typedef struct _tagBSTreeNode {int m_n ...

  3. IT公司100题-4-在二元树中找出和为某一值的所有路径

    2019独角兽企业重金招聘Python工程师标准>>> 问题描述: 输入一个整数和一棵二元树.从树的根结点开始往下访问一直到叶结点所经过的所有结点形成一条路径.打印出和与输入整数相等 ...

  4. 给定一个包含非负整数的 m x n 网格,请找出一条从左上角到右下角的路径, 使得路径上的数字总和为最小。 说明:每次只能向下或者向右移动一步。

    #include <iostream> #include <vector> using namespace std;/* 给定一个包含非负整数的 m x n 网格,请找出一条从 ...

  5. js从路径中遍历出文件或图片名称,js截取路径中的图片和文件名称

    我是根据底部文章封装了他的方法 function bianli(path) {let filename;if (path.indexOf("/") > 0) //如果包含有& ...

  6. sql网站路径php,如何在源码中找出sql语句的位置呢

    查navigation这个model的类 不好意思,这个类有是有,但里面是空的 它里面有这么一句话: /** * 获取导航 */ Tpl::output('nav_list',($nav = F('n ...

  7. 请编写一个类,该类能够实现访问一个web应用下的Servlet后,还能在浏览器地址栏中显示出同站点下的index.jsp的路径

    朋友我知道你很迷茫,不知道这是干啥的,要回答啥,哼哼-! 就是一个response的重定向,老师给的题目真是扰乱人 ①创建jsp <%@ page language="java&quo ...

  8. 常考数据结构与算法----给定一个二叉树和一个值 sum,请找出所有的根节点到叶子节点的节点值之和等于sum 的路径,

    题目描述 给定一个二叉树和一个值sum,请找出所有的根节点到叶子节点的节点值之和等于sum 的路径, 例如: 给出如下的二叉树,sum=22, 返回 [ [5,4,11,2], [5,8,9] ] 示 ...

  9. c#二叉树 取叶子节点个数_数据结构第四章:树与二叉树(二叉树的概念、性质、特殊二叉树)...

    第四章:树与二叉树(二叉树的逻辑结构) 1.二叉树 二叉树是树结构的一种,故二叉树也是逻辑结构. 二叉树:二叉树是n(n≥0)个结点的有限集合. · 1)n=0时,二叉树为空; · 2)n>0时 ...

最新文章

  1. pytorch量化感知训练(QAT)示例---ResNet
  2. 干货丨科普丨大牛的《深度学习》笔记,Deep Learning速成教程
  3. java封装示例代码
  4. 各个 Android Gradle 插件版本所需的 Gradle 版本
  5. Windows.etc\hosts文件
  6. springboot 做表白墙_华广表白墙 第六期|hsl每天都想和你嘻嘻哈哈
  7. 手机用久了很卡怎么办?
  8. 关于Android中为什么主线程不会因为Looper.loop()里的死循环卡死?引发的思考,事实可能不是一个 epoll 那么 简单。...
  9. matlab拟合例子,MATLAB数据拟合例子
  10. Android自定义View实战:影院在线选座
  11. java根据种子生成固定值_java固定种子随机数预测
  12. 什么是windows用户账户
  13. 苹果app的几种发布方式
  14. Model-Agnostic Meta-Learning (MAML) 理解
  15. 云计算优势与风险并存 安全是首要问题
  16. 提问 未来计算机的发展趋势是什么,未来计算机的发展趋势是什么?
  17. MySQL数据库03 数据库查询语句汇总
  18. 自制python脚本,6小时获取上千台mysql数据库服务器
  19. 计算机跨考应用经济学,计算机专业跨考人大经济学复习经验谈
  20. TEE7是什么?好不好

热门文章

  1. java中 indexOf() 与lastIndexOf() 用法详解
  2. java 扁平化_java8 stream flatMap流的扁平化操作
  3. android os于8.1区别,Android-x86 8.1-rc2发布 运行于x86 PC上的安卓OS
  4. 机器的速度与主频之间的关系
  5. python有内存处理模块吗_使用Python多处理的高内存使用
  6. 5.1.1 什么是I/O设备?有几类I/O设备?
  7. 5.1 计算机网络之传输层(传输层提供的服务及功能概述、端口、套接字--Socket、无连接UDP和面向连接TCP服务)
  8. python脚本迁移数据库_Python迁移MySQL数据到MongoDB脚本
  9. aix服务器端口配置文件,aix配置(IP,子网掩码,DNS)网络接口的三种方式
  10. php文本教学,php中文本操作的类