Binary Tree Path Sum
来源:互联网 发布:versions for mac使用 编辑:程序博客网 时间:2024/05/23 16:21
Given a binary tree, find all paths that sum of the nodes in the path equals to a given number target
.
A valid path is from root node to any of the leaf nodes.
java
/** * Definition of TreeNode: * public class TreeNode { * public int val; * public TreeNode left, right; * public TreeNode(int val) { * this.val = val; * this.left = this.right = null; * } * } */public class Solution { /** * @param root the root of binary tree * @param target an integer * @return all valid paths */ public List<List<Integer>> binaryTreePathSum(TreeNode root, int target) { // Write your code here List<List<Integer>> list = new ArrayList<>(); List<Integer> path = new ArrayList<>(); if (root == null) { return list; } path.add(root.val); dfs(root, root.val, target, path, list); return list; } private void dfs(TreeNode root, int sum, int target, List<Integer> path, List<List<Integer>> result) { if (root == null) { return; } if (root.left == null && root.right == null && sum == target) { result.add(new ArrayList<Integer>(path)); } if (root.left != null) { path.add(root.left.val); dfs(root.left, sum + root.left.val, target, path, result); path.remove(path.size() - 1); } if (root.right != null) { path.add(root.right.val); dfs(root.right, sum + root.right.val, target, path, result); path.remove(path.size() - 1); } }}
python
"""Definition of TreeNode:class TreeNode: def __init__(self, val): self.val = val self.left, self.right = None, None"""class Solution: # @param {TreeNode} root the root of binary tree # @param {int} target an integer # @return {int[][]} all valid paths def binaryTreePathSum(self, root, target): # Write your code here result = [] path = [] if root is None: return result path.append(root.val) self.dfs(root, root.val, target, path, result) return result def dfs(self, root, sum, target, path, result): if root is None: return; if root.left is None and root.right is None and sum == target: result.append(path[:]) if root.left is not None: path.append(root.left.val) self.dfs(root.left, sum + root.left.val, target, path, result) path.pop() if root.right is not None: path.append(root.right.val) self.dfs(root.right, sum + root.right.val, target, path, result) path.pop()
阅读全文
0 0
- Binary Tree Path Sum
- Binary Tree Path Sum
- Binary Tree Path Sum
- Binary Tree Maximum Path Sum
- Binary Tree Max Path Sum
- Binary Tree Maximum Path Sum
- Binary Tree Maximum Path Sum
- Binary Tree Maximum Path Sum
- Binary Tree Maximum Path Sum
- Binary Tree Maximum Path Sum
- Binary Tree Maximum Path Sum
- Binary Tree Maximum Path Sum
- Binary Tree Maximum Path Sum
- Binary Tree Maximum Path Sum
- Binary Tree Maximum Path Sum
- Binary Tree Maximum Path Sum
- Binary Tree Maximum Path Sum
- Binary Tree Maximum Path Sum
- app上架app strore审核遇到要求做地理位置限定
- Qt之FTP上传/下载
- 数学建模--微积分及符号函数常用操作
- System.Transactions事务超时设置
- socket通信实例
- Binary Tree Path Sum
- Dirichlet's Theorem on Arithmetic Progressions 筛取素数
- Qt之Qwt初探(二)(完)
- 网狐荣耀棋牌搭建、架设技巧 游戏房间连接失败处理
- java多线程基础知识(一)
- java泛型编程,学习笔记
- mysql 日期加减天数
- Spring MVC中,事务是否可以加在Controller层
- Nginx upstream的5种权重分配方式(转)