自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

codewinter的博客

小菜鸟在一步步变得强大呀

  • 博客(79)
  • 收藏
  • 关注

原创 【Linux】进程控制(进程创建、进程终止、进程等待、进程替换)

进程创建、进程终止、进程等待、进程替换

2022-07-31 18:19:58 1059 1

原创 【Linux】进程地址空间

在学习C/C++的时候,我们知道内存会分为几个区域栈区、堆区、全局/静态区、代码区、字符常量区…这只是语言层面的理解,是远远不够的,如下空间布局图,请问这是物理内存吗?——不是,是进程地址空间。两点结论进程地址空间不是物理内存!进程地址空间,会在进程的整个生命周期内一直存在,直到进程退出!这也就解释了为什么全局/静态变量的生命周期是整个程序,因为全局/静态变量是随着进程一直存在的。验证地址空间的基本排布?进程地址空间究竟是什么?地址空间和物理内存之间的关系?进程地址空间。...

2022-07-24 11:02:53 1764 8

原创 【Linux】环境变量和命令行参数

环境变量的基本概念,查看环境变量,和环境变量相关的指令,通过库函数获取环境变量,本地变量,命令行参数,main函数的参数列表,命令行参数的意义,环境变量的组织方式

2022-07-22 11:25:19 1524 2

原创 【Linux】进程概念(冯诺依曼体系结构、操作系统、进程)

冯诺依曼体系结构、操作系统、理解操作系统管理工作、计算机体系层状结构、进程概念、进程切换、上下文数据、创建进程、进程状态、进程优先级。

2022-07-19 22:55:42 2943

原创 【Linux】Linux 基础开发工具(yum、vim、gcc/g++、gdb、make/makefile、git)

Linux 基础开发工具(yum、vim、gcc/g++、gdb、make/makefile、git)的介绍与使用

2022-07-04 11:58:46 2122

原创 【C++】哈希的应用:位图(bitset)和布隆过滤器(bloomfilter)

面对判断一个数在不在海量数据中的问题,红黑树和哈希表查找效率是挺高的,但是我们光把海量数据存起来够呛,同时红黑树和哈希表附带的内存消耗,所需空间更大,基于这样的原因,提出了位图这种数据结构。布隆过滤器(Bloom Filter)是由布隆在1970年提出的 一种紧凑型的、比较巧妙的概率型数据结构,特点是高效地插入和查询,它的实现是一个「很长的二进制向量(位数组)」和「一系列哈希函数」。可以用来快速判断一个元素一定不存在或者可能存在一个集合中”。...

2022-07-02 12:31:04 647

原创 【C++ STL】模拟实现 unordered_set/map 系列容器(对一张哈希表进行封装)

unordered 系列容器(unordered_map / unordered_set …),其底层封装了一张哈希表(开散列、哈希桶),重点在于哈希表的结构以及相关的接口的实现。哈希表(哈希桶)的结构:这里直接拿我们自己写的开散列(原先是KV模型的)改造下,使其既可兼容K模型,也可兼容KV模型:哈希表里面具体存的是什么类型的元素,是由模板参数 T 来决定:哈希表节点结构:1.2 定义哈希表的迭代器迭代器的结构:👉注意:哈希表迭代器封装的是「节点指针」和「哈希表指针」,因为要在哈希表中找下一个桶,所.

2022-07-01 20:36:25 471

原创 【OJ】两个数组的交集(set、哈希映射 ...)

题目难度:简单OJ链接:349. 两个数组的交集 - 力扣(LeetCode) (leetcode-cn.com)题目描述:给定两个数组 nums1 和 nums2 ,返回它们的交集 。输出结果中的每个元素一定是 唯一 的。我们可以不考虑输出结果的顺序 。示例 1:示例 2:...

2022-06-28 11:36:20 199

原创 【C++ STL】哈希 Hash(闭散列、开散列介绍及其实现)

在C++98中,STL提供了底层为红黑树结构的一系列关联式容器,在查询时效率可达到 O(log2N),即最差情况下需要比较红黑树的高度次,当树中的节点非常多时,查询效率也不理想。最好的查询是,进行很少的比较次数就能够将元素找到,因此在C++11中,STL又提供了4个 unordered 系列的关联式容器,这4个容器与红黑树结构的关联式容器底层结构不同,是哈希表(哈希其实就是一种散列,一种映射)哈希表结构的 unordered 系列的关联式容器与红黑树结构的关联式容器 map/set/multimap/mul

2022-06-26 18:30:21 2198

原创 【C++ STL】模拟实现 map 和 set(对一颗红黑树进行封装)

阅读STL源码就可以发现,其实 set 和 map 自己没有实现啥东西,整体就是对红黑树进行了一个封装,set 和 map 的 insert / erase 接口底层就是调用红黑树的 insert / erase 接口,并且 set 和 map 的迭代器也都是取的红黑树里面的迭代器那 set 和 map 的核心区别在哪里呢?set 底层封装了一颗红黑树,是 KV 结构,值得注意的是 key_type 和 value_type 都是 key,说明传了两个 key 给红黑树。map 底层封装了一颗红黑树,是

2022-06-25 22:31:44 641

原创 【二叉树进阶】红黑树(Red Black Tree) - 平衡二叉搜索树

红黑树,是一种平衡二叉搜索树,但在每个结点上增加一个存储位表示结点的颜色,可以是 Red 或 Black。通过对任何一条从根到叶子的路径上各个结点着色方式的限制,红黑树确保没有一条路径会比其他路径长出2倍,因而是接近平衡的。AVL树和红黑树:红黑树更多是一种折中的选择,它舍弃平衡二叉树的严格平衡,换取节点插入时尽可能少的调整。因为红黑树的旋转情况少于AVL树,使得红黑树整体性能略优于AVL树,不然map和set底层怎么会用红黑树呢,包括很多语言的库里面都用了红黑树。如果发明AVL树的人是天才的话,那么发明红

2022-06-21 17:42:52 3034 2

原创 【二叉树进阶】AVLTree - 平衡二叉搜索树

二叉搜索树的插入和删除操作都必须先查找,查找效率代表了二叉搜索树中各个操作的效率。但是二叉搜索树有其自身的缺陷,假如往树中插入的元素有序或者接近有序,二叉搜索树就会退化成单支树,时间复杂度为O(N),因此 map、set 等关联式容器的底层结构是对二叉树进行了平衡处理,即采用平衡二叉搜索树来实现。最优情况下,有 n 个结点的二叉搜索树为完全二叉树,查找效率为:O(log2N)最差情况下,有 n 个结点的二叉搜索树退化为单支树,查找效率为:O(N)平衡二叉搜索树(Self-balancing binary s

2022-06-20 17:20:46 2397

原创 【OJ - map】单词识别

题目难度:中等OJ链接:单词识别_牛客题霸_牛客网 (nowcoder.com)题目描述:输入一个英文句子,把句子中的单词(不区分大小写)按出现次数按从多到少把单词和次数在屏幕上输出来,次数一样的按照单词小写的字典序排序输出,要求能识别英文单词和句号。输入描述:输入为一行,由 若干个单词 和 句号 组成。输出描述:输出格式参见样例。示例:解题思路:...

2022-06-18 09:54:02 196

原创 【OJ - map】前K个高频单词

OJ链接:692. 前K个高频单词 - 力扣(LeetCode) (leetcode-cn.com)题目描述:给定一个单词列表 和一个整数 ,返回前 个出现次数最多的单词。返回的答案应该按单词出现频率由高到低排序。如果不同的单词有相同出现频率, 按字典顺序 排序。示例:思路如图1、2、3:下面代码是不完整的,解决上述问题的部门还没有写:...

2022-06-17 21:41:39 342

原创 【C++ - STL】set、map、multiset、multimap 容器(介绍、使用、应用场景)

序列式容器,比如:vector、list、deque、forward_list(C++11)等,其底层为线性序列的数据结构,里面存储的是元素本身。那什么是关联式容器?它与序列式容器有什么区别?关联式容器也是用来存储数据的,与序列式容器不同的是,其里面存储的是 结构的键值对,在数据检索时比序列式容器效率更高。根据应用场景的不同,STL总共实现了两种不同结构的关联式容器:「树型结构」与「哈希结构」。树型结构的关联式容器主要有四种:map、set、multimap、multiset。这四...

2022-06-16 17:33:25 1467 1

原创 【二叉树进阶】二叉搜索树的结构、实现及应用

普通的二叉树单纯用来存储数据意义不大,还不如用数组和链表。普通数组和链表,面对一些需要频繁查找、插入、删除的场景,也很麻烦。所以这里引入了二叉搜索树。二叉搜索树又称二叉排序树,它或者是一棵空树,或者是具有以下性质的二叉树:二叉搜索树的结构特点带来的好处:定义二叉搜索树节点类模板:定义二叉搜索树类模板:2.2 默认成员函数的实现2.2.1 构造函数2.2.2 拷贝构造函数(要弄懂)2.2.3 赋值运算符重载(要弄懂)2.2.4 析构函数三、二叉搜索树的相关接口实现3.1 二叉搜索树

2022-06-15 21:14:22 931

原创 【C++】多态

多态按字面的意思就是多种形态,当类之间存在层次结构,并且类之间是通过继承关联时,就会用到多态。具体点就是去完成某个行为,当不同的对象去完成时会产生出不同的状态。C++ 多态意味着调用成员函数时,会根据调用函数的对象的类型来执行不同的函数。多态是在继承关系中不同的类对象,去调用同一函数,产生了不同的行为。比如 Student 继承了 Person。Person 对象买票全价,Student 对象买票半价。在继承中要构成多态有两个条件缺一不可:满足上述条件后,基类的指针指向基类对象则调用基类的虚函数,指向派生类

2022-06-12 20:58:09 233

原创 【C++】继承

面向对象程序设计中最重要的一个概念是继承。继承允许我们依据另一个类来定义一个类,这使得创建和维护一个应用程序变得更容易。这样做,也达到了重用代码功能和提高执行效率的效果。当创建一个类时,不需要重新编写新的数据成员和成员函数,只需指定新建的类去继承一个已有的类即可。这个已有的类称为基类(父类),新建的类称为派生类(子类)。继承(inheritance)机制是面向对象程序设计中使代码可以复用的最重要的手段,它允许程序员在保持原有类特性的基础上进行扩展,增加功能,这样产生新的类,称为派生类。继承呈现了面向对象程序

2022-06-07 13:00:50 418

原创 【C++】模板(template)进阶

模板参数分为「类型形参」与「非类型形参」,注意:不管哪种模板参数,都可以给「缺省值」。类型形参:出现在模板参数列表中,跟在 class 或者 typename 之后的参数类型名称。非类型形参:就是用一个常量作为类(函数)模板的一个参数,在类(函数)模板中可将该参数当成常量来使用。比如:C++11 增加了一个容器 array,就是一个静态数组,通过非类型模板参数来控制数组的大小:👉 Example:只是举例子,不推荐这样写现在实现了一个静态栈,可以存 10 个数据,实例化的每个对象都可以存 1

2022-06-02 11:25:26 1735 15

原创 【OJ - 堆】找数组中的第K个最大元素(C++ STL - priority_queue)

题目难度:中等LeetCode链接:215. 数组中的第K个最大元素题目描述:使用头文件 中的 sort 函数模板,直接排序,找到第k个最大的元素时间复杂度:因为 sort 底层是快速排序,所以时间复杂度为 O(N∗logN)O(N*logN)O(N∗logN)空间复杂度:O(1)O(1)O(1)思路2:建大堆使用堆排序,建立 n 个元素的大堆,做 k - 1 次删除操作后,此时堆顶元素就是第k个最大的元素因为 C++ 的优先级队列 priority_queue 本质就是堆,所以这道题我没有

2022-05-31 21:31:08 714 1

原创 【OJ - stack】中缀表达式转后缀表达式 & 后缀(逆波兰)表达式的计算

OJ - 中缀表达式转后缀表达式题目难度:简单OJ链接:中缀表达式转后缀表达式_牛客网 (nowcoder.com)将中缀表达式转为后缀表达式(逆波兰表达式),输入 a+b*c/d-a+f/b 输出 abc*d/+a-fb/+要求:语言不限;输入输出均为单个字符串;操作数用单个小写字母表示,操作符只需支持 ±*/,按照四则运算顺序确定优先级,不包含括号。示例:输入:a+b*c/d-a+f/b输出:abc*d/+a-fb/+ // 操作符跟在它要运算的操作数的后面,按优先级排列解题思路

2022-05-30 12:00:03 627

原创 【OJ - stack】栈的压入、弹出序列

OJ - 栈的压入、弹出序列题目难度:中等OJ链接:栈的压入、弹出序列__牛客网 (nowcoder.com)输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否可能为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列 1,2,3,4,5 是某栈的压入顺序,序列 4,5,3,2,1 是该压栈序列对应的一个弹出序列,但 4,3,5,1,2 就不可能是该压栈序列的弹出序列。0 <= pushV.length == popV.length <= 1000-1000

2022-05-28 17:28:08 152

原创 【C++ STL】容器适配器 Container adapter(stack & queue & priority_queue)

文章目录一、STL - stack1.1 stack 的介绍1.2 stack 的使用1.3 stack 的模拟实现二、STL - queue 的介绍2.1 queue 的介绍2.2 queue 的使用2.3 queue 的模拟实现三、STL - priority_queue3.1 priority_queue 的介绍3.2 priority_queue 的使用3.3 仿函数(⭐重要)① 什么是仿函数② 模板实例化时,仿函数的使用3.4 priority_queue 的模拟实现四、容器适配器4.1 什么是容

2022-05-27 15:19:01 547

原创 【OJ - stack】最小栈

文章目录OJ - 最小栈解题思路OJ - 最小栈题目难度:简单OJ链接:155. 最小栈 - 力扣(LeetCode)设计一个支持 push ,pop ,top 操作,并能在 常数时间 内检索到最小元素的栈。实现 MinStack 类:MinStack() 初始化堆栈对象。void push(int val) 将元素val推入堆栈。void pop() 删除堆栈顶部的元素。int top() 获取堆栈顶部的元素。int getMin() 获取堆栈中的最小元素。-- 时

2022-05-26 20:17:14 154

原创 【C++ STL】list 容器(介绍、使用、@迭代器失效、@迭代器的分类与实现方式、模拟实现、list 和 vector 的对比)

文章目录一、STL - list 的介绍二、list 的使用2.1 常见构造2.2 迭代器及其遍历操作2.3 容量操作2.4 访问操作2.5 修改操作① 迭代器失效(⭐)② 成员 / 非成员 swap 函数2.6 容器操作(了解,用的很少)三、容器迭代器(重要)3.1 容器迭代器的分类(⭐重要)3.2 迭代器的实现方式分析(⭐重要)四、stl_list 源码剖析4.1 list 的底层结构五、list 的模拟实现5.1 list 的节点结构5.2 list 的迭代器(⭐重要)① 迭代器的结构② 一些思考(⭐

2022-05-25 16:13:28 670 7

原创 【C++ STL】vector 容器(介绍、使用、@迭代器失效问题、模拟实现、动态二维数组)

文章目录一、STL - vector 的介绍二、vector 的使用(常用接口介绍)2.1 常见构造2.2 迭代器及遍历操作2.3 容量操作2.4 访问操作2.5 修改操作2.6 vector 迭代器失效问题(⭐重要)2.7 补充:其它接口三、源码剖析:vector 的底层结构四、vector 的模拟实现4.1 vector 的结构4.2 vector 的迭代器4.3 一些成员函数的实现① 默认成员函数② 容量操作使用 memcpy 浅拷贝的问题(⭐)解决 memcpy 浅拷贝的问题(⭐)③ 访问操作④ 修

2022-05-24 12:44:25 725 4

原创 【C++ STL】string 容器(介绍、使用、深浅拷贝、模拟实现、写时拷贝)

文章目录前言一、STL - string 的介绍二、string 的使用(常用接口介绍)2.1 常见构造2.2 容量操作2.3 访问操作2.4 迭代器及遍历操作2.5 修改操作2.6 string 类的非成员函数重载2.7 补充一些接口三、string 类的模拟实现3.1 深浅拷贝(⭐重要)① 浅拷贝 & 深拷贝② 拷贝构造 & 赋值运算符重载(传统写法)③ 拷贝构造 & 赋值运算符重载(现代写法)3.2 string 类的结构3.3 string 类的迭代器3.4 一些成员函数的实

2022-05-22 10:18:21 958 12

原创 【C++】模板(template)初阶

文章目录一、认识模板1.1 泛型编程1.2 函数模板1.2.1 概念1.2.2 函数模板的格式1.2.3 函数模板的原理1.2.4 函数模板的实例化1.2.5 模板参数的匹配原则1.3 类模板1.3.1 概念1.3.2 类模板的格式1.3.3 类模板的实例化1.4 笔试题一、认识模板1.1 泛型编程C语言不支持泛型编程,C++支持泛型编程。比如:如何实现一个通用的交换函数呢?void Swap(int& left, int& right){ int temp = left;

2022-05-08 19:24:47 1751

原创 【C++】内存管理(C/C++内存分布、new / delete的使用及其底层原理、operator new / operator delete函数、内存泄漏)

文章目录一、C/C++内存分布二、C++内存管理方式2.1 C语言 的动态内存管理方式2.2 C++ 的内存管理方式三、new & delete 底层3.1 operator new 与 operator delete 函数(重点)3.2 总结一下3.3 重载类专属的 operator new 与 operator delete 函数(了解)四、new & delete 的原理(重要)五、定位 new 表达式(placement-new)六、常见面试题七、内存泄漏7.1 内存泄漏及其内存泄

2022-05-04 20:34:24 271 8

原创 【OJ - 基础数学】日期类题目合集(日期差值、打印日期、日期累加)

文章目录OJ - 日期差值解题思路OJ - 打印日期解题思路OJ - 日期累加解题思路OJ - 日期差值题目难度:中等OJ链接:日期差值_牛客网 (nowcoder.com)题目描述:有两个日期,求两个日期之间的天数,如果两个日期是连续的我们规定他们之间的天数为两天。输入描述:有多组数据,每组数据有两行,分别表示两个日期,形式为YYYYMMDD输出描述:每组数据输出一行,即日期差值示例:输入:2011041220110422输出:11解题思路让小的日期(y1、m1、d1)不

2022-05-02 09:59:38 724 13

原创 【OJ - 基础数学】求1+2+3+...+n(不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句)

文章目录OJ - 求1+2+3+...+n解题思路OJ - 求1+2+3+…+n题目难度:中等OJ链接:求1+2+3+…+n__牛客网 (nowcoder.com)题目描述:求1+2+3+…+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。数据范围: 0 < n ≤ 200进阶: 空间复杂度 O(1),时间复杂度 O(n)示例1:输入:5返回值:15示例2:输入:1返回值:1解题思路不能

2022-05-02 09:20:44 1024 10

原创 【C++】类和对象(三)

文章目录一、再谈构造函数1.1 初始化与赋值1.2 初始化列表(==重要==)1.3 explicit 关键字二、static 静态成员三、成员初始化的新玩法(C++11)四、友元4.1 友元函数4.2 友元类五、内部类六、再次理解封装七、再次理解面对对象一、再谈构造函数1.1 初始化与赋值在创建对象时,编译器通过调用构造函数,给对象中各个成员变量一个合适的初始值。class Date {public: Date(int year, int month, int day) { _year =

2022-05-01 10:03:04 595 15

原创 【C++】类和对象(二)

文章目录一、类的默认成员函数二、构造函数2.1 概念2.2 特性2.3 补充:成员变量的命名风格三、析构函数3.1 概念3.2 特性四、拷贝构造函数4.1 概念4.2 特性五、运算符重载5.1 概念5.2 赋值运算符重载5.3 常见的运算符重载应用:实现一个日期类六、const6.1 const 修饰类成员函数6.2 取地址及 const 取地址运算符重载七、补充:编译器对传值传参和传值返回的优化一、类的默认成员函数如果一个类中什么成员都没有,简称为空类。空类中什么都没有吗?并不是的,任何一个类在我们不

2022-04-30 12:13:25 1608 24

原创 【C++】类和对象(一)

文章目录一、初步认识面向过程和面向对象二、类的引入C 和 C++ 中「 struct 」的区别三、类的定义四、类的访问限定符及封装4.1 类的访问限定符4.2 类的封装五、类的作用域六、类的实例化6.1 类成员的声明与定义(要搞清楚)七、类对象模型7.1 类对象的存储方式7.2 计算类对象的大小7.3 结构体内存对齐规则八、this 指针8.1 this 的引出8.2 this 指针的特性一、初步认识面向过程和面向对象面向对象:OO, Object - Oriented面向过程:PO, Procedu

2022-04-29 23:03:16 1655 24

原创 C/C++:结构体的内存对齐 & 结构体的大小计算

如何计算结构体的大小?结构体的内存对齐规则?为什么存在内存对齐?

2022-04-21 09:02:14 927 3

原创 C语言:表达式求值(整型提升、算术转换 ...)

文章目录表达式求值1)整型提升(隐式类型转换)1、如何进行整型提升2、整型提升的例子3、一些补充:char取值范围2)算术转换(隐式类型转换)3)操作符属性1、操作符的优先级2、一些问题表达式表达式求值表达式求值的顺序,一部分是由操作符的优先级和结合性决定的。同样,有些表达式的操作数在求值的过程中可能需要转换成其它类型。表达式求值,先看有没有隐式类型转换(整型提升/算数转换),然后再看操作符的优先级和结合性1)整型提升(隐式类型转换)先来看一段程序:int main(){ char a =

2022-04-21 08:52:38 3206 17

原创 【OJ - 二叉树】平衡二叉树

文章目录一、题目描述二、解题思路方法一:自顶向下的递归(暴力解法)方法二:自底向上的递归(最优解法)题目难度:简单LeetCode链接:110. 平衡二叉树 - 力扣(LeetCode) (leetcode-cn.com)一、题目描述给定一个二叉树,判断它是否是高度平衡的二叉树。本题中,一棵高度平衡二叉树定义为:一个二叉树 每个节点 的左右两个子树的高度差的绝对值不超过 1 。 二、解题思路一棵二叉树是平衡二叉树,当且仅当其所有子树也都是平衡二叉树,因此我们使用递归的方式依次判断其所有

2022-03-09 16:12:36 360 18

原创 【OJ - 二叉树】翻转二叉树

文章目录一、题目描述二、解题思路题目难度:简单LeetCode链接:226. 翻转二叉树 - 力扣(LeetCode)一、题目描述给你一棵二叉树的根节点 root ,翻转这棵二叉树,并返回其根节点。 二、解题思路核心思路:翻转二叉树其实就是交换「当前树」左右指针指向如何翻转:递归点:交换「当前树」左右指针的指向,左指针 left 指向右子树,右指针 right 指向左子树不断往下递归,遍历完 root 的所有子树/** * Definition for a b

2022-03-08 11:34:22 580 4

原创 【OJ - 二叉树】二叉树的构建(用一个先序遍历的字符串)及遍历

文章目录一、题目描述二、解题思路题目难度:较难牛客网链接:二叉树遍历_一、题目描述编一个程序,读入用户输入的一串先序遍历字符串,根据此字符串建立一个二叉树(以指针方式存储)。 例如如下的先序遍历字符串: ABC##DE#G##F### 其中“#”表示的是空格,空格字符代表空树。建立起此二叉树以后,再对二叉树进行中序遍历,输出遍历结果。输入描述:输入包括1行字符串,长度不超过100。输出描述:可能有多组测试数据,对于每组数据, 输出将输入字符串建立二叉树后中序遍历的序列,每个字符后面都有一个空

2022-03-07 11:11:20 656 19

原创 【OJ - 二叉树】另一棵树的子树

文章目录一、题目描述二、解题思路题目难度:简单LeetCode链接:572. 另一棵树的子树 - 力扣(LeetCode) 一、题目描述给你两棵二叉树 root 和 subRoot 。检验 root 中是否包含和 subRoot 具有相同结构和节点值的子树。如果存在,返回 true ;否则,返回 false 。二叉树 tree 的一棵子树包括 tree 的某个节点和这个节点的所有后代节点。tree 也可以看做它自身的一棵子树。 二、解题思路如果一个树是另一个树的子树,则要么这两个树

2022-03-06 15:28:22 774

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除