Path Sum
来源:互联网 发布:淘宝登录 编辑:程序博客网 时间:2024/06/06 07:38
题目地址:https://leetcode.com/problems/path-sum/
Given a binary tree and a sum, determine if the tree has a root-to-leaf path such that adding up all the values along the path equals the given sum.
For example:
Given the below binary tree and sum = 22,
5 / \ 4 8 / / \ 11 13 4 / \ \ 7 2 1
return true, as there exist a root-to-leaf path 5->4->11->2 which sum is 22.
这类型题目一般用递归写还是比较简单的,边界条件就是当前节点为叶子节点,如果当前节点的val与递归的当前sum一样大了,那么就是说这个树存在和等于sum的路径。
public class PathSum { public boolean hasPathSum(TreeNode root, int sum) { if (root == null) return false; if (root.left == null && root.right == null && root.val == sum) return true; return hasPathSum(root.left, sum - root.val) || hasPathSum(root.right, sum - root.val); } public static void main(String[] args) { TreeNode node1 = new TreeNode(5); TreeNode node2 = new TreeNode(4); TreeNode node3 = new TreeNode(8); TreeNode node4 = new TreeNode(11); TreeNode node5 = new TreeNode(13); TreeNode node6 = new TreeNode(4); TreeNode node7 = new TreeNode(7); TreeNode node8 = new TreeNode(2); TreeNode node9 = new TreeNode(1); node1.left = node2; node1.right =node3; node2.left = node4; node3.left = node5; node3.right = node6; node4.left = node7; node4.right = node8; node6.right = node9; PathSum pathSum = new PathSum(); System.out.println(pathSum.hasPathSum(node1, 22)); }}
该算法的时间复杂度与树的形状有关,最差的情况就是退化树,最好当然就是平衡树了。
0 0
- Path Sum && Path Sum ||
- Path Sum
- Path Sum
- Path Sum
- Path Sum
- Path Sum
- Path Sum
- Path Sum
- Path Sum
- Path Sum
- Path Sum
- Path Sum
- Path Sum
- Path Sum
- Path Sum
- Path Sum
- Path Sum
- Path Sum
- Spring集成ehcache
- redis专题-6.持久化RDB 和 AOF
- 使用Eclipse远程连接MySQL,以定时查询数据为示例
- form表单—3种参数
- Missing artifact com.sun:tools:jar:1.5.0的解决记录
- Path Sum
- 第十六周【项目一-(6)堆排序】
- 宽字符和窄字符之间的转换
- 网页布局之浮动》》三句话
- C++之explicit详解
- 第十六周项目2--大数据集上排序算法性能的体验
- select()函数用法小结及疑问点
- 第十六周项目6—冒泡排序
- android中SurfaceView的简单介绍