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

      

  • 相关阅读:
    Linux下JDK的安装
    Docker 搭建 Maven 私服
    K8s 部署 PostgreSQL
    CentOS7 使用 kubeadm 部署 K8s(单机/集群)
    CentOS7 升级 Vim
    Go 函数详解
    CentOS7 安装 golang
    Redis 集群伸缩原理
    CentOS7 安装 Redis
    CentOS7 搭建 Redis 集群
  • 原文地址:https://www.cnblogs.com/MrSaver/p/9810579.html
Copyright © 2011-2022 走看看