NC9二叉树中是否存在节点和为指定值的路径

NC9二叉树中是否存在节点和为指定值的路径

- 题目描述:

图片说明
- 题目链接:
https://www.nowcoder.com/practice/840dd2dc4fbd4b2199cd48f2dadf930a?tpId=188&&tqId=36537&rp=1&ru=/activity/oj&qru=/ta/job-code-high-week/question-ranking

- 设计思想:
图片说明
详细操作流程看下图:
图片说明

- 代码:
c++版本:

 /**
 * struct TreeNode {
 *    int val;
 *    struct TreeNode *left;
 *    struct TreeNode *right;
 * };
 */

class Solution {
public:
    /**
     * 
     * @param root TreeNode类 
     * @param sum int整型 
     * @return int整型vector<vector<>>
     */
     vector<vector<int>>res; //返回最终结果
     vector<int>tmp; //用于临时存储路径
     void dfs(TreeNode* root,int sum,int cnt){
         if(root == NULL) return; // 如果节点为空结束当前递归
         tmp.push_back(root->val); //将当前节点加入tmp数组
         cnt += root->val; //把当前节点加入到路径和中
         if(root->left == NULL && root->right == NULL){ //当递归到没有子树的时候就需要判断
             if(sum == cnt){ //如果当前节点的路径和等于sum,那么就在res中插入tmp
                 res.push_back(tmp);
             }
         }else{              
             dfs(root->left,sum,cnt); //递归左子树
             dfs(root->right,sum,cnt); //递归右子树
         }
         cnt -= tmp[tmp.size()-1]; 
         tmp.pop_back();


     }
    vector<vector<int> > pathSum(TreeNode* root, int sum) {
        // write code here
        dfs(root,sum,0); //开始类似先序的递归
        return res;    
    }
};

Java版本:

import java.util.*;

剩余60%内容,订阅专栏后可继续查看/也可单篇购买

Java岗位面试真题宝典 文章被收录于专栏

本面试宝典均来自校招面试题目大数据进行的整理

全部评论

相关推荐

12-24 14:26
东北大学 Java
一只乌鸦:重邮+东北,好经典的学校
最后再改一次简历
点赞 评论 收藏
分享
10-31 21:01
武汉大学 Java
lulululula...:仅仅按我个人的经历来看,大厂其实很少特别关注微服务,一般对微服务架构,限流熔断降级的概念了解就行,简历不写也不容易被问到。现在这个势头不如站点agent应用,比如做做mcp,rag,r对话agent,记忆管理之类的,说不定可以蹭上一波热度,进公司虽然可能还是干agent的杂活,但是可以学一学组内的业务和技术了
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务