2023-08-25 LeetCode每日一题(统计二叉树中好节点的数目)

这篇具有很好参考价值的文章主要介绍了2023-08-25 LeetCode每日一题(统计二叉树中好节点的数目)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

2023-08-25每日一题

一、题目编号

1448. 统计二叉树中好节点的数目

二、题目链接

点击跳转到题目位置

三、题目描述

给你一棵根为 root 的二叉树,请你返回二叉树中好节点的数目。

「好节点」X 定义为:从根到该节点 X 所经过的节点中,没有任何节点的值大于 X 的值。

示例 1:
2023-08-25 LeetCode每日一题(统计二叉树中好节点的数目),LeetCode每日一题,leetcode,算法,数据结构
示例 2:
2023-08-25 LeetCode每日一题(统计二叉树中好节点的数目),LeetCode每日一题,leetcode,算法,数据结构
示例 3:
2023-08-25 LeetCode每日一题(统计二叉树中好节点的数目),LeetCode每日一题,leetcode,算法,数据结构
提示:

  • 二叉树中节点数目范围是 [1, 105] 。
  • 每个节点权值的范围是 [-104,104] 。

四、解题代码

/**
 * Definition for a binary tree node.
 * struct TreeNode {
 *     int val;
 *     TreeNode *left;
 *     TreeNode *right;
 *     TreeNode() : val(0), left(nullptr), right(nullptr) {}
 *     TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
 *     TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}
 * };
 */
class Solution {
    int dfs(TreeNode* &root, int &max_num){
        if(root == nullptr){
            return 0;
        }
        if(root->val < max_num){
            return dfs(root->left, max_num)+dfs(root->right, max_num);
        }
    return 1 + dfs(root->left, root->val) + dfs(root->right, root->val);    
    } 

public:
    int goodNodes(TreeNode* root) {
    return  dfs(root, root->val);
    }
};

五、解题思路

(1) 因为题目中是在树中进行问题解决的,所以需要使用树的遍历。

(2) 因为所以寻找的点是从根节点到当前节点没有比当前节点大的,最大节点一开始设置为根结点。如果遍历到的节点小于根结点,那么最大节点值不需要更新,并且剩余符合要求的需要从左子树和右子树中找。如果当前节点大于等于目前已经更新的最大节点,则最大节点的值更新,并且最终的结果是1(当前遍历到的节点满足要求)+ 左子树和右子树中所有满足要求的节点。

(3) 返回结果即可。文章来源地址https://www.toymoban.com/news/detail-671516.html

到了这里,关于2023-08-25 LeetCode每日一题(统计二叉树中好节点的数目)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 2023-08-23 LeetCode每日一题(统计点对的数目)

    点击跳转到题目位置 给你一个无向图,无向图由整数 n ,表示图中节点的数目,和 edges 组成,其中 edges[i] = [u i , v i ] 表示 u i 和 v i 之间有一条无向边。同时给你一个代表查询的整数数组 queries 。 第 j 个查询的答案是满足如下条件的点对 (a, b) 的数目: a b cnt 是与 a 或者 b

    2024年02月11日
    浏览(41)
  • 2023-08-24 LeetCode每日一题(统计参与通信的服务器)

    点击跳转到题目位置 这里有一幅服务器分布图,服务器的位置标识在 m * n 的整数矩阵网格 grid 中,1 表示单元格上有服务器,0 表示没有。 如果两台服务器位于同一行或者同一列,我们就认为它们之间可以进行通信。 请你统计并返回能够与至少一台其他服务器进行通信的服

    2024年02月10日
    浏览(31)
  • 每日一题 1372二叉树中的最长交错路径

    给你一棵以  root  为根的二叉树,二叉树中的交错路径定义如下: 选择二叉树中  任意  节点和一个方向(左或者右)。 如果前进方向为右,那么移动到当前节点的的右子节点,否则移动到它的左子节点。 改变前进方向:左变右或者右变左。 重复第二步和第三步,直到你

    2024年02月10日
    浏览(34)
  • 2023-08-25力扣每日一题

    链接: 1448. 统计二叉树中好节点的数目 题意: 判断根节点到每个节点X的过程中,如果没有值大于X,则该节点为好节点,求好节点数量 解: 由于求根节点到其他节点的路径,则使用dfs算法,更新路径中的最大值即可 实际代码: 限制: 二叉树中节点数目范围是 [1, 10^5] 。

    2024年02月10日
    浏览(32)
  • LeetCode 每日一题 2023/9/25-2023/10/1

    记录了初步解题思路 以及本地实现代码;并不一定为最优 也希望大家能一起探讨 一起进步 9/25 460. LFU 缓存 freqMap 以频率为索引 存放一个双向链表 每个节点存放key,value,freq keyMap 以key为索引存放在freqMap中的位置 9/26 2582. 递枕头 n个人 经过2n-2次回到开始的人 9/27 1333. 餐厅过滤

    2024年02月07日
    浏览(21)
  • 2023-08-28 LeetCode每日一题(插入区间)

    点击跳转到题目位置 给你一个 无重叠的 ,按照区间起始端点排序的区间列表。 在列表中插入一个新的区间,你需要确保列表中的区间仍然有序且不重叠(如果有必要的话,可以合并区间)。 示例 1: 示例 2: 示例 3: 示例 4: 示例 5: 提示: 0 = intervals.length = 10 4 interval

    2024年02月11日
    浏览(34)
  • 2023-08-27 LeetCode每日一题(合并区间)

    点击跳转到题目位置 以数组 intervals 表示若干个区间的集合,其中单个区间为 intervals[i] = [starti, endi] 。请你合并所有重叠的区间,并返回 一个不重叠的区间数组,该数组需恰好覆盖输入中的所有区间 。 示例 1: 示例 2: 提示: 1 = intervals.length = 10 4 intervals[i].length == 2 0 = s

    2024年02月10日
    浏览(34)
  • 2023-07-08 LeetCode每日一题(三数之和)

    点击跳转到题目位置 给你一个整数数组 nums ,判断是否存在三元组 [nums[i], nums[j], nums[k]] 满足 i != j、i != k 且 j != k ,同时还满足 nums[i] + nums[j] + nums[k] == 0 。请 你返回所有和为 0 且不重复的三元组。 **注意:**答案中不可以包含重复的三元组。 提示: 3 = nums.length = 3000 -10 5

    2024年02月13日
    浏览(39)
  • 2023-08-01 LeetCode每日一题(英雄的力量)

    点击跳转到题目位置 给你一个下标从 0 开始的整数数组 nums ,它表示英雄的能力值。如果我们选出一部分英雄,这组英雄的 力量 定义为: i 0 ,i 1 ,… i k 表示这组英雄在数组中的下标。那么这组英雄的力量为 max(nums[i0],nums[i1] … nums[ik])2 * min(nums[i0],nums[i1] … nums[ik]) 。 请你

    2024年02月14日
    浏览(44)
  • 2023-08-04 LeetCode每日一题(不同路径 III)

    点击跳转到题目位置 在二维网格 grid 上,有 4 种类型的方格: 1 表示起始方格。且只有一个起始方格。 2 表示结束方格,且只有一个结束方格。 0 表示我们可以走过的空方格。 -1 表示我们无法跨越的障碍。 返回在四个方向(上、下、左、右)上行走时,从起始方格到结束方

    2024年02月14日
    浏览(30)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包