博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Leetcode 路径总和 dfs
阅读量:3903 次
发布时间:2019-05-23

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

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

说明: 叶子节点是指没有子节点的节点。

示例: 

给定如下二叉树,以及目标和 sum = 22

5             / \            4   8           /   / \          11  13  4         /  \      \        7    2      1

返回 true, 因为存在目标和为 22 的根节点到叶子节点的路径 5->4->11->2

通过dfs进行求解, 注意当为叶节点且等于目标和时才返回 true;

此题还有负数的样例,所以不能因为大于目标和就返回false,所以不能通过此情况进行剪枝。

c++:

/** * Definition for a binary tree node. * struct TreeNode { *     int val; *     TreeNode *left; *     TreeNode *right; *     TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */class Solution {public:    bool hasPathSum(TreeNode* root, int sum) {           if(root==NULL)               return false;           return dfs (root,sum,0);    }    bool dfs (TreeNode* root,int target,int sum)    {        if(root==NULL)            return false;        sum+=root->val;        if(sum==target&&root->left==NULL&&root->right==NULL)            return true;        return dfs(root->left,target,sum)||dfs(root->right,target,sum);    }};

 

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

你可能感兴趣的文章
最佳日志实践(v2.0)
查看>>
logstash日志分析的配置和使用
查看>>
Nginx问题定位之监控进程异常退出
查看>>
https://imququ.com/post/content-encoding-header-in-http.html
查看>>
字符编码的前世今生
查看>>
视频笔记:Go 抓包、分析、注入 - John Leon
查看>>
linux下模拟丢包,延时命令总结
查看>>
java的字符流简单介绍
查看>>
初识java的xml
查看>>
通过DOM方式对xml文件进行解析
查看>>
哈希桶处理哈希冲突
查看>>
位图(BitMap)&& 布隆过滤器(BloomFilter)
查看>>
总结: 笔试中常见virtual函数问题
查看>>
vue中使用mock模拟后端数据
查看>>
常见的数据库有哪几种?
查看>>
Java后端的SQL语句
查看>>
注意:eclipse使用自己的编译器
查看>>
Class对象的获取方法
查看>>
URI与URL的区别
查看>>
关于鼓励、加油的英语句子
查看>>