zoukankan      html  css  js  c++  java
  • LeetCode:路径总和【112】

    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);
        }
    }
    

      

  • 相关阅读:
    Laravel 初始化
    ant design pro 左上角 logo 修改
    请求到服务端后是怎么处理的
    Websocket 知识点
    王道数据结构 (7) KMP 算法
    王道数据结构 (6) 简单的模式匹配算法
    王道数据结构 (4) 单链表 删除节点
    王道数据结构 (3) 单链表 插入节点
    王道数据结构 (2) 单链表 尾插法
    王道数据结构 (1) 单链表 头插法
  • 原文地址:https://www.cnblogs.com/MrSaver/p/9810579.html
Copyright © 2011-2022 走看看