帮助文档
专业提供香港服务器、香港云服务器、香港高防服务器租用、香港云主机、台湾服务器、美国服务器、美国云服务器vps租用、韩国高防服务器租用、新加坡服务器、日本服务器租用 一站式全球网络解决方案提供商!专业运营维护IDC数据中心,提供高质量的服务器托管,服务器机房租用,服务器机柜租用,IDC机房机柜租用等服务,稳定、安全、高性能的云端计算服务,实时满足您的多样性业务需求。 香港大带宽稳定可靠,高级工程师提供基于服务器硬件、操作系统、网络、应用环境、安全的免费技术支持。
服务器资讯 / 香港服务器租用 / 香港VPS租用 / 香港云服务器 / 美国服务器租用 / 台湾服务器租用 / 日本服务器租用 / 官方公告 / 帮助文档
Leetcode 112. 路径总和 java解决给定一个值判断二叉树根节点到叶子节点总和是否相等 算法
发布时间:2024-03-02 23:53:45   分类:帮助文档
Leetcode 112. 路径总和 java解决给定一个值判断二叉树根节点到叶子节点总和是否相等 算法

leetcode 原题链接:. - 力扣(LeetCode)
1. 题目描述:

给你二叉树的根节点 root 和一个表示目标和的整数 targetSum 。判断该树中是否存在 根节点到叶子节点 的路径,这条路径上所有节点值相加等于目标和 targetSum 。如果存在,返回 true ;否则,返回 false 。

叶子节点 是指没有子节点的节点。

   示例 1:



 
输入:root = [5,4,8,11,null,13,4,7,2,null,null,null,1], targetSum = 22
输出:true
解释:等于目标和的根节点到叶节点路径如上图所示。

 更多的示例就不贴了。示例用的是数组表示的,不好理解。我是用的TreeNode对象的形式。


 
提示:
树中节点的数目在范围 [0, 5000] 内-1000 <= Node.val <= 1000-1000 <= targetSum <= 1000

 2. 前几天面试,给我出的一道题,很简单没有答出来。==!算法看到链表没有再看下去了。这几天重新复习了下二叉树,广度优先遍历,深度优先遍历,以及前序,中序,后序递归,这些都复习到,这道题基本就搞定了
3. 二叉树知识点:
     a. 满二叉树:
                        深度为k,有2^k-1个节点的二叉树 (个人理解:节点的子元素有左子树,右子树也不能空着)
                      
     b. 完全二叉树:
                            完全二叉树由满二叉树而引出来的。对于深度为K的,有n个结点的二叉树,当且仅当其每一个结点都与深度为K的满二叉树中编号从1至n的结点一一对应时称之为完全二叉树
                      
           c.上述都是不带值得二叉树,平衡二叉树 avl (Adelson-Velsky and Landis)它是一 棵空树或它的左右两个子树的高度差的绝对值不超过1,并且左右两个子树都是一棵平衡二叉树,不会出现树退化成链表情况,如图:
            
           d. 深度优先遍历中,三种遍历方式区别:
                 前序遍历:中 左 右
                 中序遍历:左 中 右
                 后序遍历:左 右 中
                记住要点就是中的位置。    
4. 这些知识点后续单开一篇记录下,知道平衡二叉树的一些逻辑,那这个题就很简单了。递归算下和是否等于给定值就行了。递归结束条件就是从根节点到叶子节点的总合同要求判断的值是否相等
package com.nami.algorithm.study.tree;

/
* 描述:
*
* @Author: lbc
* @Date: 2024-02-28 14:37
* @email: 594599620@qq.com
* @Description: keep coding
*/
public class Solution {

public boolean hasPathSum(TreeNode root, int sum) {
if (root == null) {
return false;
}
if (root.left == null && root.right == null) {
return sum == root.val;
}
return hasPathSum(root.left, sum - root.val) || hasPathSum(root.right, sum - root.val);
}

public class TreeNode {
int val;
TreeNode left;
TreeNode right;

TreeNode() {
}

TreeNode(int val) {
this.val = val;
}

TreeNode(int val, TreeNode left, TreeNode right) {
this.val = val;
this.left = left;
this.right = right;
}
}


}

      
 


香港云服务器租用推荐
服务器租用资讯
·广东云服务有限公司怎么样
·广东云服务器怎么样
·广东锐讯网络有限公司怎么样
·广东佛山的蜗牛怎么那么大
·广东单位电话主机号怎么填写
·管家婆 花生壳怎么用
·官网域名过期要怎么办
·官网邮箱一般怎么命名
·官网网站被篡改怎么办
服务器租用推荐
·美国服务器租用
·台湾服务器租用
·香港云服务器租用
·香港裸金属服务器
·香港高防服务器租用
·香港服务器租用特价