算法-01-二叉树根节点到叶子节点和为指定值的路径
2021-07-21 17:55
标签:@param color HERE oid 数组 rgb list result else 给定一个二叉树和一个值sum,请找出所有的根节点到叶子节点的节点值之和等于sum 的路径, 例如: 给出如下的二叉树,sum=22 算法-01-二叉树根节点到叶子节点和为指定值的路径 标签:@param color HERE oid 数组 rgb list result else 原文地址:https://www.cnblogs.com/shix0909/p/15028414.html描述
Java
import java.util.*;
/*
* public class TreeNode {
* int val = 0;
* TreeNode left = null;
* TreeNode right = null;
* }
*/
public class Solution {
/**
*
* @param root TreeNode类
* @param sum int整型
* @return int整型ArrayList
Python
# class TreeNode:
# def __init__(self, x):
# self.val = x
# self.left = None
# self.right = None
#
#
# @param root TreeNode类
# @param sum int整型
# @return int整型二维数组
#
class Solution:
def pathSum(self , root , sum ):
# write code here
path = []
paths = []
self.dfs(root,sum,path,paths)
return paths
def dfs(self, root: TreeNode, sum :int, path: list, paths: list):
if root is None:
return None
path.append(root.val)
if root.left is None and root.right is None and sum==root.val:
paths.append(path.copy())
else:
self.dfs(root.left,sum-root.val,path,paths)
self.dfs(root.right,sum-root.val,path,paths)
path.pop(len(path)-1)