[leetcode]112. Path Sum
来源:互联网 发布:免费空间 能用mysql 编辑:程序博客网 时间:2024/05/29 09:12
题目描述:
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.
递归解法
public boolean hasPathSum(TreeNode root, int sum) { if (root == null) return false; if (root.left == null && root.right == null) return sum == root.val; return hasPathSum(root.left, sum - root.val) || hasPathSum(root.right, sum - root.val);}
BFS
public boolean hasPathSum(TreeNode root, int sum) { if (root == null) return false; Queue<TreeNode> queue = new LinkedList<TreeNode>(); Queue<Integer> value = new LinkedList<Integer>(); queue.offer(root); value.offer(root.val); while(!queue.isEmpty()){ int levelNum = queue.size(); for (int i = 0; i < levelNum; i++){ //TreeNode node = queue.peek(); int val = value.peek(); // if (queue.peek().left == null && queue.peek().right == null){ // if (value.peek() == sum) {System.out.println(value.peek()); return true;} // } TreeNode node = queue.peek(); int val = value.peek(); if (node.left == null && node.right == null && val == sum) return true; if (node.left != null) { value.offer(value.peek() + queue.peek().left.val); queue.offer(queue.peek().left); } if (queue.peek().right != null) { value.offer(value.peek() + queue.peek().right.val); queue.offer(queue.peek().right); } queue.poll(); value.poll(); } } return false; }
DFS
public boolean hasPathSum(TreeNode root, int sum) { if (root == null) return false; //if (root.val == sum) return true; Stack<TreeNode> stack = new Stack<>(); Stack<Integer> value = new Stack<>(); stack.push(root);value.push(root.val); while (!stack.isEmpty()){ TreeNode node = stack.pop(); Integer val = value.pop(); if (node.left == null && node.right == null && val == sum) return true; if (node.left != null) { stack.push(node.left); value.push(val+ node.left.val); } if (node.right != null) { stack.push(node.right); value.push(val+ node.right.val); } //if (stack.peek().left != null && stack.peek().right != null) stack.pop(); } return false; }
0 0
- LeetCode 112. Path Sum
- [LeetCode]112.Path Sum
- 【LeetCode】112.Path Sum
- [Leetcode] 112. Path Sum
- [leetcode] 112.Path Sum
- 112. Path Sum LeetCode
- Leetcode 112. Path Sum
- LeetCode *** 112. Path Sum
- leetcode-112. Path Sum
- Leetcode 112. Path Sum
- 112.[Leetcode]Path Sum
- LeetCode 112. Path Sum
- Leetcode 112. Path Sum
- 【leetcode】112. Path Sum
- Leetcode 112. Path Sum
- LeetCode - 112. Path Sum
- [Leetcode]112. Path Sum
- LeetCode 112. Path Sum
- 操作系统与网络实现 之二十(丁)
- xp系统之家官网纯净版系统下载
- ZCMU-1549-组合数
- 递归函数实现倒计时效果
- RxJava学习总结
- [leetcode]112. Path Sum
- java中窗口window的刷新
- 在Eclipse中设置自动生成注释
- Hibernate映射类型整理
- OpenStreetMap(二):如何使用osmdroid库 - 原文+译文
- 网页上实现导出excel表格时,怎样在后台生成excel后,让表格在浏览器中自动下载(larval框架)
- EasyAR开发教程第二弹--AR 视频的识别与播放
- REDIS安装后外网无法访问的问题
- Linux 文件操作权限