当前位置:首页 » 《随便一记》 » 正文

112. 路径总和

9 人参与  2022年11月27日 12:25  分类 : 《随便一记》  评论

点击全文阅读


文章目录

2.示例3.答案①递归②BFS③DFS
给你二叉树的根节点 root 和一个表示目标和的整数 targetSum 。判断该树中是否存在 根节点到叶子节点 的路径,这条路径上所有节点值相加等于目标和 targetSum 。如果存在,返回 true ;否则,返回 false 。

叶子节点 是指没有子节点的节点。

2.示例

在这里插入图片描述

输入:root = [5,4,8,11,null,13,4,7,2,null,null,null,1], targetSum = 22输出:true解释:等于目标和的根节点到叶节点路径如上图所示。
输入:root = [], targetSum = 0输出:false解释:由于树是空的,所以不存在根节点到叶子节点的路径。

3.答案

①递归

注意第二个示例,当结点为空时认为不存在路径返回false;
可以使得参数 targetSum等于当前路径上为了凑出targetSum还差的数值。

停止条件:
结点为空时返回false, 当前结点为叶子结点且val=targetSum(刚好凑出targetSum) 返回true。
递归内容: 在左孩子上查找,在右孩子上查找
返回值: 左右孩子查找结果的或

 bool hasPathSum(TreeNode* root, int targetSum) {          //尝试递归,将taargetsum看做还差的值        if(!root) return false;//空指针,检查路径时,不能把节点为空当做一种        if(!root->left&&!root->right) return targetSum==root->val;  //叶子结点,把这个当做递归的退出条件之一         return hasPathSum(root->left,targetSum-root->val)||hasPathSum(root->right,targetSum-root->val);

②BFS

层次遍历中,可以一层一层检查,每次保存当前结点和当前路径所有节点和.

 bool hasPathSum(TreeNode* root, int targetSum) {         if(!root) return false;//空指针,检查路径时,不能把节点为空当做一种        queue<TreeNode*> qt;        queue<int> qi;        qt.push(root);         qi.push(root->val);        while(!qt.empty()){             TreeNode* tmp=qt.front();  //取出当前结点            qt.pop();            int val=qi.front();  //当前路径和            qi.pop();              if(!tmp->left&&!tmp->right) {   //当前为叶子结点                if(targetSum==val) return true;                continue;            }            if(tmp->left) qt.push(tmp->left),qi.push(val+tmp->left->val);            if(tmp->right) qt.push(tmp->right),qi.push(val+tmp->right->val);        }        return false;

③DFS

深度优先遍历同样,每次保存当前结点和当前结点路径和。

 bool hasPathSum(TreeNode* root, int targetSum) {  if(!root) return false;        /深度优先  ,每次都是一条路径和        stack<TreeNode*> st;        stack<int> si;        st.push(root);         si.push(root->val);        while(!st.empty()){             TreeNode* tmp=st.top();  //取出当前结点            st.pop();            int val=si.top();            si.pop();              if(!tmp->left&&!tmp->right) {   //当前为叶子结点                if(targetSum==val) return true;                continue;            }            if(tmp->left) st.push(tmp->left),si.push(val+tmp->left->val);            if(tmp->right) st.push(tmp->right),si.push(val+tmp->right->val);        }        return false;    }

来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/path-sum


点击全文阅读


本文链接:http://www.zhangshiyu.com/post/49113.html

<< 上一篇 下一篇 >>

  • 评论(0)
  • 赞助本站

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

最新文章

  • [和四个兽人试婚后,拒绝我99次的他悔疯了]小说精彩节选免费试读_鹿砚卿朋友黑蛇删减内容修复版本
  • 该死的药,该死的人独家章节限时试读_「苏珊林轩顾行」完本
  • 完结文出国五年归来后,我为被拍卖小视频的妹妹点天灯列表_完结文出国五年归来后,我为被拍卖小视频的妹妹点天灯(陆昀昭沈晓雪)
  • 杜伟的发现祠堂的秘密后,全村无一活口书荒冯若琳杜伟全书在线
  • 川隐逢归客人气列表_川隐逢归客人气(顾临川沈霜音)
  • 攻略失败后,我一心求死章节彩蛋限时释出‌_林兆川顾雪爸爸妈妈全文免费无弹窗阅读_笔趣阁
  • 无端却被春风误免费赏析(孟南汐宋祁钰)_无端却被春风误免费赏析孟南汐宋祁钰
  • 岁岁不渡春风谢列表_岁岁不渡春风谢(季华厉朝圣宗)
  • [妻子出去旅游,在大山里失联了]无弹窗阅读_[赵颖孟志泽云云]节选角色羁绊特辑‌
  • 女儿死后,爸妈为我老公和凶手举办婚礼全书+后续+结局(周明昊)列表_女儿死后,爸妈为我老公和凶手举办婚礼全书+后续+结局(周明昊)女儿死后,爸妈为我老公和凶手举办婚礼全书+后续+结局在线
  • 全文老公为佛女的狗点天灯后,我死遁离开全书在线(江梵音桃星)列表_全文老公为佛女的狗点天灯后,我死遁离开全书在线
  • 当爱恨如潮生乔若梨全(裴叙白乔若梨)全书浏览_当爱恨如潮生乔若梨全全书浏览

    关于我们 | 我要投稿 | 免责申明

    Copyright © 2020-2022 ZhangShiYu.com Rights Reserved.豫ICP备2022013469号-1