我是靠谱客的博主 坚强小熊猫,最近开发中收集的这篇文章主要介绍简:二叉树分支求和,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

题目描述

给定一个二叉树和一个值 sum sum,判断是否有从根节点到叶子节点的节点值之和等于 sum sum的路径,
例如:
给出如下的二叉树, sum=22 sum=22,

返回true,因为存在一条路径 5to 4to 11to 25→4→11→2的节点值之和为 22 

解:

这道题主要考察二叉树的深度遍历,这道题要避免多余的查找,一旦找到符合的就直接返回结束递归。

import java.util.*;

/*
 * public class TreeNode {
 *   int val = 0;
 *   TreeNode left = null;
 *   TreeNode right = null;
 * }
 */

public class Solution {
    /**
     * 
     * @param root TreeNode类 
     * @param sum int整型 
     * @return bool布尔型
     */
    private int s=0;
    
    public boolean find(TreeNode node,int sum){
        s+=node.val;
        if(node.left==null && node.right==null && s==sum){
            return true;
        }
        if(node.right!=null && find(node.right,sum)){
            return true;
        }
        if(node.left!=null && find(node.left,sum)){
            return true;
        }
        s-=node.val;
        return false;
    }
    
    
    public boolean hasPathSum (TreeNode root, int sum) {
        //注意null+0的组合,数学逻辑上来讲“没有=0”也没问题
        //但这道题的测试用例null表示无,也就不存在sum,也就不会=0
        if(root==null){
            return false;
        }
        return find(root,sum);
    }
}

 

最后

以上就是坚强小熊猫为你收集整理的简:二叉树分支求和的全部内容,希望文章能够帮你解决简:二叉树分支求和所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(53)

评论列表共有 0 条评论

立即
投稿
返回
顶部