当前位置: 首页 > news >正文

算法笔记(六)—— 二叉树相关概念及经典算法题

二叉树的相关概念(判断方式)

1. 搜索二叉树:对每棵子树,左树比头小,右树比头大。

        中序遍历,判断是否升序

2. 完全二叉树:最后一层满或从左到右遍满。

        宽度遍历,如果有节点有右孩子没左孩子,返回false,如果遇到第一个左右孩子不双全的情况,那么接下来遇到的所有节点都必须是叶节点

3. 满二叉树:节点个数 = 2^深度-1

        左边子树需要满足满二叉树,右边子树需要满足满二叉树

4. 平衡二叉树:对任何一个子树,左树和右树高度差不超过1

        4.1. 左子树平衡,右子树平衡

        4.2. 左树高度差和右树高度差之差不超过1

找俩个节点的最低公共祖先

方法一:哈希表存储节点对应的父结点,然后用哈希set来进行去重找第一个祖先。

方法二(算法优化):

/*** Definition for a binary tree node.* struct TreeNode {*     int val;*     TreeNode *left;*     TreeNode *right;*     TreeNode(int x) : val(x), left(NULL), right(NULL) {}* };*/
class Solution {
public:TreeNode* lowestCommonAncestor(TreeNode* root, TreeNode* p, TreeNode* q) {if(root==nullptr||root==p||root==q)return root;TreeNode* left = lowestCommonAncestor(root->left , p , q);TreeNode* right = lowestCommonAncestor(root->right , p , q);if(left!=nullptr&&right!=nullptr){return root;}return left==nullptr?right:left;}
};

找一个节点中序遍历的后继节点(带父节点指针)

1. 节点有右树,则后继为右树上的最左节点

2. 节点无右树,往上走,看前节点是不是当前节点左孩子,如果是则当前节点为后继

二叉树序列化和反序列化

序列化:_表示值结束,#表示nullptr

反序列化:根据得到的字符串还原即可

相关文章:

算法笔记(六)—— 二叉树相关概念及经典算法题

二叉树的相关概念(判断方式) 1. 搜索二叉树:对每棵子树,左树比头小,右树比头大。 中序遍历,判断是否升序 2. 完全二叉树:最后一层满或从左到右遍满。 宽度遍历,如果有节点有右孩子…...

redux全网最详细教程

一.路由懒加载 关键点: lazy懒加载 Suspense组件(添加加载提示) utils文件夹 –LazyLoad.js //lazy懒加载 Suspense 组件(添加加载提示) import {lazy,Suspense} from react export default function LazyLoad(url)…...

华为OD机试 - 匿名信(Python)| 真题+思路+考点+代码+岗位

匿名信 题目 电视剧《分界线》里面有一个片段,男主为了向警察透露案件细节,且不暴露自己,于是将报刊上的字减下来,剪拼成匿名信。 现在又一名举报人,希望借鉴这种手段,使用英文报刊完成举报操作。 但为了增加文章的混淆度,只需满足每个单词中字母数量一致即可,不关注…...

【Python】编写代码实现指定下标值顺序进行正序和倒序排序算法编程

🎉🎉 在本次python文章中,主要通过定义一个排序方法,实现一组数列能够按照另一组数列指定的位置进行重新排序输出,默认正序排序,可通过True表示逆序输出 目录1、知识点2、数列和元组1)错误遍历方…...

Sitara™处理器的产品开发路线图

Sitara™处理器的产品开发路线图概述Evaluation Phase(评估阶段)Board Development Phase(硬件发展阶段,硬件设计人员应重点关注这个阶段)Software Development Phase(软件发展阶段)Product Phase/SW Lifecycle概述 一般情况下,会存在四个主要的发展阶段…...

岗位来啦-华为研发OD招聘

研发OD招聘 ★★关于我们★★ 万物互联时代已到来,无线通信技术正在重塑世界。作为行业领导者,华为无线致力于通过移动创新消除数字鸿沟,构建万物互联的智能世界。基于5G的技术,家庭无线宽带接入、车联网、云AR/VR、eMBB高清视频…...

【LeetCode】剑指 Offer 06. 从尾到头打印链表 p58 -- Java Version

题目链接: https://leetcode.cn/problems/cong-wei-dao-tou-da-yin-lian-biao-lcof/ 1. 题目介绍(06. 从尾到头打印链表) 输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回)。 【测试用例…...

童年回忆--扫雷(包括标记功能和递归展开)--万字讲解让你学会扫雷制作

魔王的介绍:😶‍🌫️一名双非本科大一小白。魔王的目标:🤯努力赶上周围卷王的脚步。魔王的主页:🔥🔥🔥大魔王.🔥🔥🔥 ❤️‍&#x1…...

【重器】GPS北斗卫星时钟基准与卫星授时服务技术原理

【重器】GPS北斗卫星时钟基准与卫星授时服务技术原理 【重器】GPS北斗卫星时钟基准与卫星授时服务技术原理 1.前言 由计算机网络系统组成的分布式系统,若想协调一致进行:IT行业的“整点开拍”、“秒杀”、“Leader选举”,通信行业的“同步组网…...

软件测试未来发展趋势怎么样

未来,互联网技术是很多企业能够活下去的关键点。互联网技术成为新的基建,互联网“基建”化就决定了软件测试行业的缺口会一直扩大。 并且,软件测试岗位,已不仅局限于互联网企业,现已逐步深入到实体产业,金…...

aws Distro for OpenTelemetry 可观测性workshop记录

参考资料 https://aws-otel.github.io/docs/introductionhttps://aws-otel.github.io/docs/introduction aws distro for opentelemetry 官方提供了不同语言不同使用场景下完善的使用实例和相关配置。 AWS Distro for OpenTelemetrics 由以下部分组成,用于向后端…...

Leetcode力扣秋招刷题路-0068

从0开始的秋招刷题路,记录下所刷每道题的题解,帮助自己回顾总结 68. 文本左右对齐 给定一个单词数组 words 和一个长度 maxWidth ,重新排版单词,使其成为每行恰好有 maxWidth 个字符,且左右两端对齐的文本。 你应该…...

Nginx介绍及安装(windows版,Linux版)

目录 一、Nginx介绍 1、Nginx优势 2、Nginx作用 3、部署静态资源 4、代理 5、负载均衡 二、Nginx安装步骤(windows版) 三、Nginx安装步骤(Linux版) 1、官网下载安装包,下载完之后上传到Linux系统上 2、在Lin…...

Camera | 4.瑞芯微平台MIPI摄像头应用程序编写

前面3篇我们讲解了camera的基础概念,MIPI协议,CSI2,常用命令等,本文带领大家入门,如何用c语言编写应用程序来操作摄像头。 Linux下摄像头驱动都是基于v4l2架构,要基于该架构编写摄像头的应用程序&#xff…...

【1250. 检查「好数组」】

来源:力扣(LeetCode) 描述: 给你一个正整数数组 nums,你需要从中任选一些子集,然后将子集中每一个数乘以一个 任意整数,并求出他们的和。 假如该和结果为 1,那么原数组就是一个「…...

Spring 如何解决循环依赖?

什么是循环依赖 ? 一个或多个对象之间存在直接或间接的依赖关系,这种依赖关系构成一个环形调用,有下面 3 种方式。 我们看一个简单的 Demo,对标“情况 2”。 Service public class Louzai1 {Autowiredprivate Louzai2 louzai2;…...

CocoaPods使用指南

前言 对于大多数软件开发团队来说,依赖管理工具必不可少,它能针对开源和私有依赖进行安装与管理,从而提升开发效率,降低维护成本。针对不同的语言与平台,其依赖管理工具也各有不同,例如 npm 管理 Javascri…...

Kafka 消息队列

目录主流的消息队列消息队列的应用场景缓存/肖锋解耦异步处理KafkaKafka的定义Kafka的底层基础架构Kafka分区如何保证Leader选举Kafka分区如何保证Leader和Follower数据的一致性Kafka 中消费者的消费方式Kafka 高效读写数据的原因(高性能吞吐的原因)&…...

华为OD机试 - 挑选字符串(Python)| 真题+思路+考点+代码+岗位

挑选字符串 题目 给定a-z,26 个英文字母小写字符串组成的字符串A和B, 其中A可能存在重复字母,B不会存在重复字母, 现从字符串A中按规则挑选一些字母可以组成字符串B 挑选规则如下: 同一个位置的字母只能挑选一次, 被挑选字母的相对先后顺序不能被改变, 求最多可以同时…...

对比Hashtable、HashMap、TreeMap有什么不同?

第9讲 | 对比Hashtable、HashMap、TreeMap有什么不同? Map 是广义 Java 集合框架中的另外一部分,HashMap 作为框架中使用频率最高的类型之一,它本身以及相关类型自然也是面试考察的热点。 今天我要问你的问题是,对比 Hashtable、…...

图卷积神经网络自编码器天线优化设计方法【附代码】

✨ 本团队擅长数据搜集与处理、建模仿真、程序设计、仿真代码、EI、SCI写作与指导,毕业论文、期刊论文经验交流。 ✅ 专业定制毕设、代码 ✅如需沟通交流,点击《获取方式》 (1)天线结构图表示与变分图自编码器代理模型&#xff1a…...

Wanwu框架:中文AI应用开发从入门到实践

1. 项目概述:一个面向中文场景的AI应用开发框架 最近在折腾AI应用开发的朋友,可能都绕不开一个痛点:如何快速、低成本地构建一个能理解中文、处理中文任务,并且部署起来不麻烦的智能应用?无论是想做个智能客服&#xf…...

5G上行免调度传输:开启无线通信新篇章

5G上行免调度传输:开启无线通信新篇章 在无线通信技术不断演进的浪潮中,5G以其高速率、低时延和大连接等特性,成为推动社会数字化转型的关键力量。其中,上行免调度传输作为5G技术体系中的一个重要环节,正逐步展现出其独…...

AI智能体如何通过区块链钱包实现自动化加密云存储

1. 项目概述:当AI智能体遇上加密云存储如果你正在使用OpenClaw这类AI智能体平台,并且头疼于如何让它们自动、安全地处理云端数据——比如备份对话记录、上传生成的文件,或者管理需要付费的API服务——那么你很可能需要一个既懂区块链支付、又…...

《Java面试85题图解版(二)》进阶深化中篇:Spring核心 + 数据库进阶

📘 《Java面试85题图解版(二)》进阶深化中篇:Spring核心 数据库进阶 阅读提示:这是“图解比喻一句话总结”面试题库第二篇的进阶深化中篇,覆盖Spring核心与Spring Boot(9题)和数据库…...

物联网标准演进与云平台破局:从M2M到IoT的实战路径

1. 从M2M到IoT:一场迟来的标准革命十多年前,当我第一次接触“机器对机器”这个概念时,感觉它就像个被锁在工厂车间里的幽灵——功能强大,但离普通人的生活无比遥远。那时的M2M,谈论的是专用网络、私有协议和封闭的垂直…...

观察使用Token Plan套餐后月度AI调用成本的变化趋势

🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 观察使用Token Plan套餐后月度AI调用成本的变化趋势 1. 项目背景与成本挑战 作为一个小型技术团队的负责人,我负责维护…...

Arm生命周期管理器(LCM)架构与安全供应实战解析

1. Arm生命周期管理器(LCM)架构解析生命周期管理器(Lifecycle Manager)是Arm安全架构中的核心安全子系统,负责管理芯片从生产到报废全生命周期的安全状态。我在多个物联网安全芯片项目中验证过,LCM的设计直接影响设备的抗攻击能力和密钥管理可靠性。1.1 …...

GPU并行计算:SIMT架构与性能优化实践

1. SIMT架构的本质与硬件挑战 在GPU计算领域,单指令多线程(SIMT)执行模型是实现大规模并行的核心机制。与传统的SIMD(单指令多数据)不同,SIMT允许同一warp(通常包含32个线程)中的每个…...

为LLM构建持久化知识大脑:基于知识图谱与向量搜索的Memento MCP实战

1. 项目概述:为LLM构建一个持久化、可理解的知识大脑如果你用过Claude Desktop、Cursor或者GitHub Copilot,可能会发现一个痛点:这些AI助手虽然聪明,但它们的“记忆”是短暂的、碎片化的。每次对话都像是一次全新的邂逅&#xff0…...