博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
LeetCode:路径总和【112】
阅读量:4885 次
发布时间:2019-06-11

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

LeetCode:路径总和【112】

题目描述

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

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

示例: 

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

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

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

题目分析

  我们至少找到一条路径,这条路径是从根节点到叶子节点,且路径和为目标值

  • 首先分析采用的算法:DFS深度优先搜索算法
  • 递归终止条件判断:若当前节点为叶子节点,则判断累加和是否为目标值,返回真假
  • 业务逻辑处理:若不为叶子节点,则从左右两路分别出发,出发时累加当前节点的值

  这道题应该来说是一道很常规的搜索问题,关于DFS搜索的相关资料可参考我的相关文章。

Java题解

/** * Definition for a binary tree node. * public class TreeNode { *     int val; *     TreeNode left; *     TreeNode right; *     TreeNode(int x) { val = x; } * } */class Solution {    public boolean hasPathSum(TreeNode root, int sum) {        if(root==null)            return false;        return hasPathSumCore(root,0,sum);    }        public boolean hasPathSumCore(TreeNode root, int sum,int target) {        //递归终止条件        if(root==null)            return false;        if(root.left==null&&root.right==null&&target==sum+root.val)            return true;        if(root.left==null&&root.right==null)            return false;        //业务逻辑处理        return hasPathSumCore(root.left,sum+root.val,target)||hasPathSumCore(root.right,sum+root.val,target);    }}

  

转载于:https://www.cnblogs.com/MrSaver/p/9810579.html

你可能感兴趣的文章
Math
查看>>
git安装配置
查看>>
从CPU的运行到函数调用做个了解
查看>>
记录一次无聊的(经历了Nodejs -> Shell -> C)的探索问题过程
查看>>
接口请求失败处理,重新请求并限制请求次数.自己封装搞定retry函数
查看>>
C# 数据库连接增删改查
查看>>
Xcode 最近使用的一些问题
查看>>
JSP 自定义标签
查看>>
ACM_水题你要信了(修改版)
查看>>
题解报告:hdu 1087 Super Jumping! Jumping! Jumping!
查看>>
汇编实验一
查看>>
2015 Multi-University Training Contest 6 hdu 5357 Easy Sequence
查看>>
HDU 4856 Tunnels
查看>>
常用的页面加载慢的解决方案
查看>>
Excel催化剂开源第11波-动态数组函数技术开源及要点讲述
查看>>
关于Spring配置文件提示的插件下载
查看>>
软件工程师就业前景
查看>>
asp.net成员管理系统membership详解教程(一)
查看>>
情态动词
查看>>
关于linux的一些基础知识
查看>>