#输入一颗二叉树和一个整数,打印出二叉树中结点值的和为输出整数的所有路径,从树的根结点开始向下一直到叶结点所经过的结点形成一条路径
def FindNumFromTree(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 = FindNumFromTree(root.left,target_number - root.val)
right = FindNumFromTree(root.right,target_number - root.val)
for item in left+right:
result.append([root.val]+item)
return result
class TreeNode:
def __init__(self, x):
self.val = x
self.left = None
self.right = None
root = TreeNode(8)
root.left = TreeNode(8)
root.right = TreeNode(7)
root.left.left = TreeNode(9)
root.left.right = TreeNode(2)
root.left.right.left = TreeNode(4)
root.left.right.right = TreeNode(7)
#递归调用的本质就是一个压栈和出栈的过程
print(FindNumFromTree(root1,25))
二叉树中和为某一值的路径--python
最新推荐文章于 2020-09-01 21:29:11 发布