二叉树系列 10/11

news2024/10/11 13:04:08

一、二叉树中的伪回文路径

给你一棵二叉树,每个节点的值为 1 到 9 。我们称二叉树中的一条路径是 「伪回文」的,当它满足:路径经过的所有节点值的排列中,存在一个回文序列。

请你返回从根到叶子节点的所有路径中 伪回文 路径的数目。

示例 1:

输入:root = [2,3,1,3,1,null,1]
输出:2 
解释:上图为给定的二叉树。总共有 3 条从根到叶子的路径:红色路径 [2,3,3] ,绿色路径 [2,1,1] 和路径 [2,3,1] 。
     在这些路径中,只有红色和绿色的路径是伪回文路径,因为红色路径 [2,3,3] 存在回文排列 [3,2,3] ,绿色路径 [2,1,1] 存在回文排列 [1,2,1] 。
思路:

要找到伪回文路径,根据特征来看:伪回文路径中数量为奇数的数的个数:要么有一个、要么没有

所以我们就统计每一个字串中数的数量,然后遍历判断其中数量为奇数的个数,>1就不是伪回文串了。

代码:
class Solution {
    public int pseudoPalindromicPaths (TreeNode root) {
        int[] arr=new int[10];
        return dfs(root,arr);
    }
    public int dfs(TreeNode root,int[] arr){
        if(root==null)return 0;
        int res=0;
        arr[root.val]^=1;
        if(root.left==null&&root.right==null){
            res=count(arr);
        }else{
            res=dfs(root.left,arr)+dfs(root.right,arr);
        }
        arr[root.val]^=1;
        return res;
    }
    public int count(int[] arr){
        int res=0;
        for(int num:arr){
            res+=num;
        }
        return res<=1?1:0;
    }
}

二、祖父节点值为偶数的节点和

你一棵二叉树,请你返回满足以下条件的所有节点的值之和:

该节点的祖父节点的值为偶数。(一个节点的祖父节点是指该节点的父节点的父节点。)

如果不存在祖父节点值为偶数的节点,那么返回 0 。

思路:

整体递归,将祖父节点、父节点、子节点看作一个整体,往下去递归。当遇到符合条件的整体就将子节点的值添加。

条件:

if(grandParent!=null&&grandParent.val%2==0)
代码:
class Solution {
    public int sumEvenGrandparent(TreeNode root) {
        return dfs(null,null,root);
    }
    public int dfs(TreeNode grandparent,TreeNode parent,TreeNode root){
        if(root==null)return 0;
        int add=0;
        if(grandparent!=null&&grandparent.val%2==0){
            add=root.val;
        }
        return add+dfs(parent,root,root.left)+dfs(parent,root,root.right);
    }
}

三、节点与其祖先之间的最大差值

给定二叉树的根节点 root,找出存在于 不同 节点 A 和 B 之间的最大值 V,其中 V = |A.val - B.val|,且 A 是 B 的祖先。

(如果 A 的任何子节点之一为 B,或者 A 的任何子节点是 B 的祖先,那么我们认为 A 是 B 的祖先)

 最大差值就是:7

思路:

在遍历的时候,我们需要维护一个最大值和最小值。然后将每次的值和最大/小值比较即可。

eg:

第一层的时候 最大值、最小值都是8,最大差值为0

第二层 左子树 最大值、最小值分别为8、3,最大差值为5;

第二层 右子树 最大值、最小值分别为10、8,最大差值为2;

以此类推...

代码:
class Solution {
    public int maxAncestorDiff(TreeNode root) {
        return dfs(root,root.val,root.val,0);
    }
    public int dfs(TreeNode root,int min,int max,int maxDiff){
        if(root==null)return 0;
        min=Math.min(min,root.val);
        max=Math.max(max,root.val);
        maxDiff=Math.max(maxDiff,Math.max(root.val-min,max-root.val));
        int leftDiff=dfs(root.left,min,max,maxDiff);
        int rightDiff=dfs(root.right,min,max,maxDiff);
        return Math.max(maxDiff,Math.max(leftDiff,rightDiff));
    }
}

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

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

相关文章

K8s中pod的管理和优化

一、k8s中的资源 1.1 资源管理介绍 在kubernetes中&#xff0c;所有的内容都抽象 资源&#xff0c;用户需要通过操作资源来管理kubernetes。kubernetes的本质上就是一个集群系统&#xff0c;用户可以在集群中部署各种服务所谓的部署服务&#xff0c;其实就是在kubernetes集群中…

MySQL中text类型对查询效率的影响

背景 任何设计都需要结合实际的需求或者说系统来做&#xff0c;我们现在服务端的整体设计趋向于领域驱动模型&#xff08;DDD&#xff09;。将业务抽象划分成各个独立领域对象&#xff0c;各个领域各尽其职&#xff0c;只负责自己领域的工作。回到MySQL设计&#xff0c;在我们将…

springboot查询全部部门流程

前端发送请求后&#xff0c;会请求DeptController的方法list()。 package com.intelligent_learning_aid_system.controller;import com.intelligent_learning_aid_system.pojo.Dept; import com.intelligent_learning_aid_system.pojo.Result; import com.intelligent_learni…

python安装插件

报错 E:\pythonProject\pythonProject_JD\Scripts\python.exe E:\浏览器下载\pythoncode\pythonProject_JD\car.py Traceback (most recent call last): File "E:\浏览器下载\pythoncode\pythonProject_JD\car.py", line 5, in <module> from selenium…

jdk 相关网址

官方资源&#xff1a; OpenJDK: https://openjdk.org/ OpenJDK 官方网站 (https://openjdk.org/) 是 Java 开发者的重要资源。以下是该网站的主要内容和功能&#xff1a; 项目概览 OpenJDK 的介绍和目标最新版本信息 下载 源代码下载预构建二进制文件链接 文档 开发者指南AP…

视频监控汇聚平台Liveweb安防监控平台实现接入监控视频集中管理方案

随着各行业数字化转型的不断推进&#xff0c;视频监控技术在行业内的安防应用及管理支撑日益增多。然而&#xff0c;由于前期规划不清晰、管理不到位等问题&#xff0c;视频监管系统普遍存在以下问题&#xff1a; 1. 各部门单位在视频平台建设中以所属领域为单位&#xff0c;导…

java多态-cnblog

java多态 细分的重载会增加代码量&#xff0c;降低易用程度 定义一个类&#xff0c;继承所有类的对象&#xff0c;根据向上转型可以让每个类的对象都调用初始类的方法&#xff0c;在方法中设置判断&#xff0c;不同的对象导致方法做不同的事&#xff0c;这就是多态 写一个灯…

C++:vector(题目篇)

文章目录 前言一、只出现一次的数字二、只出现一次的数字 II三、只出现一次的数字 III四、杨辉三角五、删除有序数组中的重复项六、数组中出现次数超过一半的数字七、电话号码的字母组合总结 前言 今天我们一起来看vector相关的题目~ 一、只出现一次的数字 只出现一次的数字…

Windows电脑安装FileBrowser文件管理系统结合内网穿透打造个人网盘

文章目录 前言1.下载安装File Browser2.启动访问File Browser3.安装cpolar内网穿透3.1 注册账号3.2 下载cpolar客户端3.3 登录cpolar web ui管理界面3.4 创建公网地址 4.固定公网地址访问 &#x1f4a1; 推荐 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&…

数据结构:单链表OJ题

目录 相交链表解题思路代码 环形链表&#xff08;I&#xff09;解题思路代码 环形链表&#xff08;II&#xff09;解题思路代码 随机链表的复制&#xff08;深拷贝&#xff09;解题思路代码 相交链表 题目描述&#xff1a; 案例&#xff1a; 题目链接&#xff1a;https://l…

从边缘云到边缘AI,似乎边缘更有想象空间,你认同么?

【科技明说 &#xff5c; 科技热点关注】 前些天&#xff0c;我看到一个业内的行业分析说&#xff0c;边缘人工智能已经开始兴起&#xff0c;但是要到了2026年才会产生影响。这就意味着边缘AI的未来值得关注一下。 什么是边缘AI&#xff1f;边缘AI就是将人工智能处理功能带到了…

怎么找矩阵系统,怎么源码搭建,源头技术开发需要哪些支持

一、引言 在进行矩阵系统源码搭建时&#xff0c;选择合适的工具至关重要。正确的工具选择不仅可以提高开发效率&#xff0c;还能确保系统的稳定性、可扩展性和性能。本文将探讨在矩阵系统源码搭建过程中如何选择合适的工具。 二、前端开发工具选择 前端框架 React&#xff1a;由…

LLM大模型怎样进行数据和质量测试

大型语言模型&#xff08;LLMs&#xff09;的四种测试策略 测试机团队需要一套针对LLM的测试策略。在为嵌入在AI agent应用中的LLMs大模型制定测试策略时&#xff0c;可以考虑以下四点实践方法&#xff1a; 1&#xff09;创建测试数据以扩展软件质量保证 2&#xff09…

C 盘又满了?试试我用的这个方法吧,轻松腾出几十个G,还有好用的工具推荐哟!

如题&#xff0c;作为具有洁癖的程序猿&#xff0c;作为具有容量焦虑症的程序猿&#xff0c;我总是希望C盘保持轻巧状态&#xff08;看来还是Mac比较省心&#xff09;&#xff0c;奈何我给了它200G的存储&#xff0c;安装的应用都保存到了D盘&#xff0c;可它还是蹭蹭飙升&…

第一个Flutter应用解析(一)

1、创建项目 1.1 新建 1.2 选择Flutter SDK的位置 1.3 项目名称 英文单词加下划线起名规范&#xff0c;其他默认即可。 1.4 点击运行 发生报错显示我们的JAVA版本不符合 1.5 更改版本设置 1.6 再次启动项目 2、分析页面代码 以下是lib/main.dart的源代码&#xff08;为了阅…

搭建企业私有云

A公司为国内知名大型瓶装饮料合资企业。2019年以前业务系统部署于IBM 的Unix小型机&#xff0c;该机型在IBM结束支持后&#xff0c;一直购买专业公司运维服务。Unix系统软件和运维成本相较Linux X86平台要高很多&#xff0c;不能满足应用轻量化和快速叠代的需求。公司原有的基础…

儿童护眼灯哪个牌子好?儿童护眼灯推荐测评教你选护眼台灯!

​据调查,我国现有盲人500多万&#xff0c;低视力近千万人&#xff0c;尤其是在儿童及青少年当中&#xff0c;患病率极高。全国学生体质健康调研最新数据表明&#xff0c;我国儿童青少年总体近视率为52.7%&#xff0c;其中&#xff0c;小学生为42%&#xff0c;初中生为80.7%&am…

机器学习【医疗领域及其药品搭建】

机器学习【医疗领域及其药品搭建】 1. 个性化医疗与精准治疗2. 药物管理2. 药物研发与创新4. 医疗图像分析与诊断辅助5. 数据安全与隐私保护6. 药物安全与风险管理7. 电子健康记录&#xff08;EHR&#xff09;的利用8. 机器人辅助手术 1. 个性化医疗与精准治疗 基因组学&#…

Leetcode 完全平方数

这段代码是用 动态规划&#xff08;Dynamic Programming, DP&#xff09;来解决 LeetCode 第279题「完全平方数」的问题&#xff0c;题目要求给定一个整数 n&#xff0c;找出若干个完全平方数&#xff08;如1, 4, 9, 16等&#xff09;的和&#xff0c;恰好等于 n&#xff0c;并…

【韩顺平Java笔记】第8章:面向对象编程(中级部分)【314-326】

314. 动态绑定机制 【注】属性没有动态绑定机制 虽然B类sum被注释掉了&#xff0c;但是其父类A类的sum方法没被注释掉&#xff0c;所以调用的是A类的sum方法&#xff0c;A类的sum方法中有个getI()方法&#xff0c;根据动态绑定机制&#xff0c;现在这个a引用的运行类型是B类&a…