这篇文章给大家分享的是有关Python中如何求解二叉树中和为某一值的路径的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。
题目描述
输入一颗二叉树和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径。
思路:首先要理解题意,是从根节点往子节点连。
1、如果只有根节点或者找到叶子节点,我们就把其对应的val值返回
2、如果不是叶子节点,我们分别对根节点的左子树、右子树进行递归,直到找到叶子结点。然后遍历把叶子结点和父节点对应的val组成的序列返回上一层;如果没找到路径,其实也返回了序列,只不过是[]
代码如下:
# -*- coding:utf-8 -*-
class TreeNode():
def __init__(self,x):
self.val = x
self.left = None
self.right = None
def function(root,target_number):
result = []
if not root:
return result
# 如果只有根节点或者找到叶子节点,我们就把其值返回
if not root.left and not root.right and root.val == target_number:
return [[root.val]]
else:
# 如果不是叶子节点,我们分别对根节点的左子树、右子树进行递归,注意修改变量:
left = function(root.left,target_number - root.val)
right = function(root.right,target_number - root.val)
for item in left+right:
result.append([root.val]+item)
return result
感谢各位的阅读!关于“Python中如何求解二叉树中和为某一值的路径”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!