码迷,mamicode.com
首页 > 其他好文 > 详细

[LeetCode] 112. Path Sum

时间:2020-01-12 15:04:09      阅读:65      评论:0      收藏:0      [点我收藏+]

标签:tree   ram   tco   code   二叉树   efi   ber   color   and   

二叉树的路径和。题意是给一个二叉树和一个数字sum。求是否有这样一条路径可以使得二叉树从根节点到叶子节点经过的所有的节点值之和等于sum。此题可以用BFS和DFS两种做法解决,时间和空间复杂度都是O(n)。例子如下,

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.

DFS,比较直观,直接上代码了。

 1 /**
 2  * Definition for a binary tree node.
 3  * function TreeNode(val) {
 4  *     this.val = val;
 5  *     this.left = this.right = null;
 6  * }
 7  */
 8 /**
 9  * @param {TreeNode} root
10  * @param {number} sum
11  * @return {boolean}
12  */
13 var hasPathSum = function(root, sum) {
14     if (root === null) return false;
15     if (root.left === null && root.right === null) return sum === root.val;
16     return (
17         hasPathSum(root.left, sum - root.val) ||
18         hasPathSum(root.right, sum - root.val)
19     );
20 };

 

BFS

用一个queue存储遍历到的节点。当加入某个节点的时候,如果这个节点没有孩子节点,需要判断加入这个节点之后的值是否等于sum;如果这个节点有孩子节点,接着遍历它的孩子节点,将cur.val + cur.left.val (cur.val + cur.right.val)加入queue。

 1 /**
 2  * @param {TreeNode} root
 3  * @param {number} sum
 4  * @return {boolean}
 5  */
 6 var hasPathSum = function(root, sum) {
 7     if (!root) return false;
 8     let queue = [root];
 9     while (queue.length) {
10         let cur = queue.shift();
11         if (!cur.left && !cur.right && cur.val === sum) {
12             return true;
13         }
14         if (cur.left) {
15             cur.left.val += cur.val;
16             queue.push(cur.left);
17         }
18         if (cur.right) {
19             cur.right.val += cur.val;
20             queue.push(cur.right);
21         }
22     }
23     return false;
24 };

[LeetCode] 112. Path Sum

标签:tree   ram   tco   code   二叉树   efi   ber   color   and   

原文地址:https://www.cnblogs.com/aaronliu1991/p/12182508.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!