【LeetCode】Day206-二叉树着色游戏

news2025/1/16 7:50:45

题目

1145. 二叉树着色游戏【中等】

题解

官解说的实在是抽象了,看了下高赞题解,果然很清晰易懂
在这里插入图片描述
以 x 为根,它的三个邻居(左儿子、右儿子和父节点)就对应着三棵子树:

  • 左子树
  • 右子树
  • 父节点子树

哪棵子树最大,二号玩家就选哪棵。

设n2为2号玩家(蓝色)最多可以染的节点个数,左子树大小为left,右子树大小为right,那么父节点子树的大小就是 n-1-left-right,因此
n 2 = m a x ( l e f t , r i g h t , n − 1 − l e f t − r i g h t ) n2=max(left, right, n-1-left-right) n2=max(left,right,n1leftright)
一号玩家(红色)染的节点个数为n-n2;

如果 n 2 > n − n 2 n_2>n-n_2 n2>nn2,即 2 ∗ n 2 > n 2*n_2>n 2n2>n 时,2号玩家获胜!

DFS 统计子树节点数目。

class Solution {
    int x,left,right;
    public boolean btreeGameWinningMove(TreeNode root, int n, int x) {
        this.x=x;//重名要加this!
        dfs(root);
        int n2=Math.max(Math.max(left,right),n-1-left-right);
        return 2*n2>n;
    }
    //统计节点个数
    public int dfs(TreeNode root){
        if(root==null)
            return 0;
        int lnum=dfs(root.left);
        int rnum=dfs(root.right);
        if(root.val==x){
            left=lnum;
            right=rnum;
        }
        return lnum+rnum+1;
    }
}

时间复杂度: O ( n ) O(n) O(n)

空间复杂度: O ( n ) O(n) O(n),递归空间

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/198194.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

微服务项目框架及多模块开发

目录 项目模式 技术栈 项目架构图 模块 案例演示 主模块 zmall-common子模块 zmall-user子模块 项目模式 电商模式:市面上有5种常见的电商模式,B2B、B2C、 C2B、 C2C、O2O; 1、B2B模式 B2B (Business to Business),是指 商家与商家…

java递归-八皇后问题(回溯算法)

1.八皇后问题介绍 八皇后问题,是一个古老而著名的问题,是回溯算法的典型案例。该问题是国际西洋棋棋手马克斯贝瑟尔于 1848 年提出:在 88 格的国际象棋上摆放八个皇后,使其不能互相攻击,即:任意两个皇后都…

Day04-数据分析模型

文章目录数据分析模型数据分析流程第一:定性法第二:定量法一、数据分析要解决什么问题?1. 研究历史2. 解释现状4. 洞察商机5. 寻求最佳方案二、数据分析师的工作三、数据分析流程1. 数据分析框架2. 数据获取3. 数据处理4. 数据分析5. 撰写报告…

大数据技术架构(组件)18——Hive:FileFormats(1)

1.5、FileFormats1.5.1、FileFormat对比:1.5.1.1、Text File每一行都是一条记录,每行都以换行符(\ n)结尾。数据不做压缩,磁盘开销大,数据解析开销大。可结合Gzip、Bzip2使用(系统自动检查&…

Python 3 基本数据类型,包含示例演示(初学友好)

嗨害大家好鸭~ 我是小熊猫 有好好学习python吗? Python学习资料电子书 点击此处跳转文末名片获取 Python3 基本数据类型 Python 中的变量不需要声明。每个变量在使用前都必须赋值,变量赋值以后该变量才会被创建。 在 Python 中,变量就是变量…

Redis实现分布式锁

基于Redis实现分布式锁。分为单Redis节点实现和Redis集群实现。 基于单个Redis节点实现分布式锁 作为分布式锁实现过程中的共享存储系统,Redis可以使用键值对来保护锁变量,在接收和处理不同客户端发送的加锁的操作请求。 客户端A、C同时请求加锁&#…

【Linux】基本开发工具的使用-yumvimgcc/g++git

文章目录Linux 软件包管理器-yum什么是软件包window和Linux互传文件的工具: lrzszyum注意事项查看软件包注意事项如何安装软件注意事项如何卸载软件好玩的指令sl 小火车cowsay 打印一只说话的小牛boxes 打印一个ASCII的动画linux_logo 显示linux系统的logocurl http://wttr.in …

2021美赛D题艺术家思路整理

问题整理 使用influence_data数据集或其部分创建音乐影响力的(多个)定向网络,其中影响者与关注者相连。开发捕捉此网络中“音乐影响的参数”。通过创建定向影响网络的子网络来探索音乐影响力的子集。描述这个子网络。你的“音乐影响”指标在…

((蓝桥杯 刷题全集)【备战(蓝桥杯)算法竞赛-第3天】( 从头开始重新做题,记录备战竞赛路上的每一道题 )距离蓝桥杯还有64天

🏆🏆🏆🏆🏆🏆🏆 欢迎观看我的博客,如有问题交流,欢迎评论区留言,一定尽快回复!(大家可以去看我的专栏,是所有文章的目录&a…

PMP知识点1

根据PMBOK和参考书籍自己总结的一些不熟悉知识点,当做笔记放这复习。 1. 项目战略管理、组合管理、项目及管理、项目管理区别 战略管理项目组合管理项目集管理项目管理工作内容明确组织战略目标选择有利于实现战略目标的项目分析并利用各项目之间有机联系规范有序…

RAS《Research on Offense and Defense of DDos Based on Evolutionar Game Theory》

Read abstract and personal Summary of《Research on Offense and Defense of DDos Based on Evolutionar Game Theory》Ⅰ:Read abstract(阅读摘要)0:Proper noun interpretation(专有名词解释)1:The question raise…

windows 休眠后风扇狂转的解决方法

windows 休眠后风扇狂转的解决方法 问题描述: 在Windows电脑接入usb设备后进入休眠状态时,风扇立刻最大功率运行,在拔出usb/唤醒电脑后风扇会恢复正常。 解决方法: 使用powercfg 查询唤醒电脑的设备,然后移除此设备…

C语言基础(五)—— 数组、数组地址(步长+1)、字符串输入输出、随机数

1. 概述在程序设计中,为了方便处理数据把具有相同类型的若干变量按有序形式组织起来——称为数组。数组就是在内存中连续的相同类型的变量空间。同一个数组所有的成员都是相同的数据类型,同时所有的成员在内存中的地址是连续的。数组属于构造数据类型&am…

从Manifold到SNE再到t-SNE再回到Manifold

在介绍t-SNE之前,要从流形开始讲起。 流形Manifold 将流形引入到机器学习领域主要有两个用途: 改进原本欧式空间中的算法,使它能作用到流形上,直接或者间接地利用和流行的性质和构造。将流形映射到欧式空间中,令欧式…

软件测试面试:年后就拿到了5个offer,希望也能助你拿下满意的offer

求职,就像打仗,不仅是一场挑战自己的战斗,也是一场与用人单位的较量。 而求职者只有准备足够充分,才能在这场毫无硝烟的“战场”上取得胜利。 那么软件测试面试需要做哪些准备以及软件测试面试需要哪些技巧呢? 1、熟…

ThreadLocal 适合用在哪些实际生产的场景中?

在通常的业务开发中,ThreadLocal有两种典型的使用场景 场景1,ThreadLocal 用作保存每个线程独享的对象,为每个线程都创建一个副本,这样每个线程都可以修改自己所拥有的副本, 而不会影响其他线程的副本,确保线程安全 …

【内网安全-隧道搭建】内网穿透_Frp上线、测试

目录 Frp(简易上线) 1、简述: 2、工具: 3、使用: 1、准备: 2、服务端(公网): 2、客户端(内网): 3、测试方法: 4、…

【Linux】基础IO --- 软硬链接、acm时间、动静态库制作、动静态链接、动静态库加载原理…

我用执着烧死了所有的幼稚和任性,那片荒野慢慢长出了理智冷漠和清醒。 文章目录一、软硬链接1.软硬链接的区别(是否具有独立的inode)2.软硬链接的作用2.1 软链接作用(建立快捷方式)2.2 硬链接作用(防止误删…

PLC信号处理系列之滤波器设计(MATLAB滤波器设计工具箱介绍)

在学习和应用滤波器解决工程问题之前,需要了解一定的信号处理相关基础知识,有关信号和系统的学习笔记可以参看下面的专栏: https://blog.csdn.net/m0_46143730/article/details/128788864https://blog.csdn.net/m0_46143730/article/details/128788864命令行窗口输入>&g…

排序模型进阶-FTRL

5.8 排序模型进阶-FTRL 学习目标 目标 无应用 无 5.8.1 问题 在实际项目的时候,经常会遇到训练数据非常大导致一些算法实际上不能操作的问题。比如在推荐行业中,因为DSP的请求数据量特别大,一个星期的数据往往有上百G,这种级别…