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

      

  • 相关阅读:
    Elasticsearch 机制 架构 集群 选举
    《Leo the late bloomer》阿虎开窍了
    各行业发明专利排行榜
    接口响应 越来越慢
    知识产权代理 与 工作流
    MBA Business Org Responsbility Account Stock
    心理学 防内耗
    Apache Kafka Zookeeper Quorum
    The different aspect of architecture(架构的不同方面)
    hPaPaas low-code/no-code 低代码
  • 原文地址:https://www.cnblogs.com/MrSaver/p/9810579.html
Copyright © 2011-2022 走看看