博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
112. 路径总和(Javascript)
阅读量:712 次
发布时间:2019-03-21

本文共 930 字,大约阅读时间需要 3 分钟。

学习算法,锻炼自我!记录自己的成长过程!

给你二叉树的根节点 root 和一个表示目标和的整数 targetSum ,判断该树中是否存在 根节点到叶子节点 的路径,这条路径上所有节点值相加等于目标和 targetSum 。

这道题的难度为简单,不过这道确实简单,这只需要前序遍历,并将每次的值保存起来,在到达叶节点的时候,比较判断就可以了,遍历二叉树,我一般都喜欢使用迭代的方式,而不是递归。

var hasPathSum = function (root, targetSum) {
if (!root) {
return false; }; //这里使用栈来存储值 const stack = [[root, root.val]]; while (stack.length) {
const [r, val] = stack.pop(); //这里需要注意为什么先push右子节点了 //因为我们使用的是栈,后进先出的特点, //前序遍历:r->r.left->r.right //当左子节点后进的时候,它就会先遍历 if (r.right) {
stack.push([r.right, r.right.val + val]); }; if (r.left) {
stack.push([r.left, r.left.val + val]); }; //当遍历到叶子节点的时候,如果找到则返回true //如果未找到则继续查找 if (!r.left && !r.right) {
if (val === targetSum) {
return true; }; }; }; //没有找到则返回false return false;};

转载地址:http://dasgz.baihongyu.com/

你可能感兴趣的文章