mirror of
https://github.com/chefyuan/algorithm-base.git
synced 2024-11-28 06:48:53 +00:00
chefyuan
This commit is contained in:
parent
b68b384c15
commit
b47322ceb3
@ -68,6 +68,7 @@
|
|||||||
- [【动画模拟】栈和队列详解](https://github.com/chefyuan/algorithm-base/blob/main/animation-simulation/%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84%E5%92%8C%E7%AE%97%E6%B3%95/%E5%85%B3%E4%BA%8E%E6%A0%88%E5%92%8C%E9%98%9F%E5%88%97%E7%9A%84%E9%82%A3%E4%BA%9B%E4%BA%8B.md)
|
- [【动画模拟】栈和队列详解](https://github.com/chefyuan/algorithm-base/blob/main/animation-simulation/%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84%E5%92%8C%E7%AE%97%E6%B3%95/%E5%85%B3%E4%BA%8E%E6%A0%88%E5%92%8C%E9%98%9F%E5%88%97%E7%9A%84%E9%82%A3%E4%BA%9B%E4%BA%8B.md)
|
||||||
- [【绘图解析】链表详解](https://github.com/chefyuan/algorithm-base/blob/main/animation-simulation/%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84%E5%92%8C%E7%AE%97%E6%B3%95/%E5%85%B3%E4%BA%8E%E9%93%BE%E8%A1%A8%E7%9A%84%E9%82%A3%E4%BA%9B%E4%BA%8B.md)
|
- [【绘图解析】链表详解](https://github.com/chefyuan/algorithm-base/blob/main/animation-simulation/%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84%E5%92%8C%E7%AE%97%E6%B3%95/%E5%85%B3%E4%BA%8E%E9%93%BE%E8%A1%A8%E7%9A%84%E9%82%A3%E4%BA%9B%E4%BA%8B.md)
|
||||||
- [【绘图描述】递归详解](https://mp.weixin.qq.com/s/A4xG9IbQUjFwQoy9YcneCw)
|
- [【绘图描述】递归详解](https://mp.weixin.qq.com/s/A4xG9IbQUjFwQoy9YcneCw)
|
||||||
|
- 【动画模拟】树
|
||||||
|
|
||||||
### 🔋字符串匹配算法
|
### 🔋字符串匹配算法
|
||||||
|
|
||||||
@ -201,9 +202,9 @@
|
|||||||
### 🍖其他知识
|
### 🍖其他知识
|
||||||
|
|
||||||
- [C++程序喵大人 ](https://github.com/fightingwangzq/cpp-learning) by 帅强
|
- [C++程序喵大人 ](https://github.com/fightingwangzq/cpp-learning) by 帅强
|
||||||
- [编程资源](https://www.code-navcn) by 编程导航
|
- [编程资源](https://www.code-nav.cn) by 编程导航
|
||||||
- [Java知识地图](https://githubcom/smileArchitect/JavaMap) by 帅小雷
|
- [Java知识地图](https://github.com/smileArchitect/JavaMap) by 帅小雷
|
||||||
- [腾讯云开发](https://githubcom/liyupi) by 鱼皮
|
- [腾讯云开发](https://github.com/liyupi) by 鱼皮
|
||||||
|
|
||||||
### 🍰数据库学习
|
### 🍰数据库学习
|
||||||
|
|
||||||
|
@ -1,29 +1,50 @@
|
|||||||
|
这假期咋就唰的一下就没啦,昨天还跟放假第一天似的,今天就开始上班了。
|
||||||
|
|
||||||
|
既然开工了,那咱们就随遇而安呗,继续努力搬砖吧。
|
||||||
|
|
||||||
|
下面我们将镜头切到袁记菜馆。
|
||||||
|
|
||||||
|
小二:掌柜的,最近大家都在忙着种树,说是要保护环境。
|
||||||
|
|
||||||
|
老板娘:树 ? 咱们店有呀,前几年种的那棵葡萄树,不是都结果子了吗?就数你吃的最多。
|
||||||
|
|
||||||
|
小儿:这.......。
|
||||||
|
|
||||||
|
大家应该猜到,咱们今天要唠啥了。
|
||||||
|
|
||||||
之前给大家介绍了`链表`,`栈`,`哈希表` 等数据结构
|
之前给大家介绍了`链表`,`栈`,`哈希表` 等数据结构
|
||||||
|
|
||||||
今天咱们来看一种新的数据结构,树。
|
今天咱们来看一种新的数据结构,树。
|
||||||
|
|
||||||
这篇文章较基础,对于没有学过数据结构的同学会有一些帮助,如果你已经学过的话,可以复习一下,查缺补漏,该部分也是面试的高频考点。
|
PS:本篇文章内容较基础,对于没有学过数据结构的同学会有一些帮助,如果你已经学过的话,也可以复习一下,查缺补漏,后面会继续更新这个系列。
|
||||||
|
|
||||||
> 注:因为手机看代码不太方便,所以该文对应的代码部分,放在了我的仓库,大家可以去 Github 进行阅读。
|
**文章大纲**
|
||||||
|
|
||||||
|
![image](https://cdn.jsdelivr.net/gh/tan45du/test@master/image.1ein9cz4oips.png)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
> 注:可能有的同学不喜欢手机阅读,所以将这篇同步在了我的仓库,大家可以去 Github 进行阅读,点击文章最下方的阅读原文即可
|
||||||
|
|
||||||
## 树
|
## 树
|
||||||
|
|
||||||
我们先来看下树的定义
|
我们先来看下百度百科对树的定义
|
||||||
|
|
||||||
树是 n (n >= 0) 个节点的有限集。 n = 0 时 我们称之为空树, 空树是树的特例。
|
> 树是 n (n >= 0) 个节点的有限集。 n = 0 时 我们称之为空树, 空树是树的特例。
|
||||||
|
>
|
||||||
|
|
||||||
在任意一棵非空树中:
|
在`任意一棵非空树`中:
|
||||||
|
|
||||||
- 有且仅有一个特定的节点称为根(Root)的节点
|
- 有且仅有一个特定的节点称为根(Root)的节点
|
||||||
- 当 n > 1 时,其余节点可分为 m (m > 0)个`互不相交的有限集` T1、T2、........Tm,其中每一个集合本身又是一棵树,并且称为根的子树。
|
- 当 n > 1 时,其余节点可分为 m (m > 0)个`互不相交的有限集` T1、T2、........Tm,其中每一个集合本身又是一棵树,并且称为根的子树。
|
||||||
|
|
||||||
我们先来拆解一下上面的两句话,到底什么是子树呢?见下图
|
我们一起来拆解一下上面的两句话,到底什么是子树呢?见下图
|
||||||
|
|
||||||
![二叉树](https://cdn.jsdelivr.net/gh/tan45du/photobed@master/二叉树.6w6xnvay3v40.png)
|
![二叉树](https://cdn.jsdelivr.net/gh/tan45du/photobed@master/二叉树.6w6xnvay3v40.png)
|
||||||
|
|
||||||
例如在上面的图中
|
例如在上面的图中
|
||||||
|
|
||||||
有且仅有一个特定的节点称为根节点,也就是上图中的橙色节点。
|
有且仅有一个特定的节点称为根节点,也就是上图中的`橙色节点`。
|
||||||
|
|
||||||
当节点数目大于 1 时,除根节点以外的节点,可分为 m 个`互不相交`的有限集 T1,T2........Tm。
|
当节点数目大于 1 时,除根节点以外的节点,可分为 m 个`互不相交`的有限集 T1,T2........Tm。
|
||||||
|
|
||||||
@ -41,7 +62,9 @@
|
|||||||
|
|
||||||
我们将 (A) , (B) , (C) , (D) 代入上方定义中发现,(A) , (B) 符合树的定义,(C), (D) 不符合,这是因为 (C) , (D) 它们都有相交的子树。
|
我们将 (A) , (B) , (C) , (D) 代入上方定义中发现,(A) , (B) 符合树的定义,(C), (D) 不符合,这是因为 (C) , (D) 它们都有相交的子树。
|
||||||
|
|
||||||
好啦,到这里我们知道如何区分树啦,下面我们通过下面两张图再来深入了解一下树。
|
好啦,到这里我们知道如何辨别树啦,下面我们通过下面两张图再来深入了解一下树。
|
||||||
|
|
||||||
|
主要从节点类型,节点间的关系下手。
|
||||||
|
|
||||||
![](https://cdn.jsdelivr.net/gh/tan45du/photobed@master/幻灯片2.4gvv5tql9cw0.PNG)
|
![](https://cdn.jsdelivr.net/gh/tan45du/photobed@master/幻灯片2.4gvv5tql9cw0.PNG)
|
||||||
|
|
||||||
@ -51,6 +74,10 @@
|
|||||||
|
|
||||||
![](https://cdn.jsdelivr.net/gh/tan45du/photobed@master/幻灯片3.17o6v5lqd9xc.PNG)
|
![](https://cdn.jsdelivr.net/gh/tan45du/photobed@master/幻灯片3.17o6v5lqd9xc.PNG)
|
||||||
|
|
||||||
|
这里节点的高度和深度可能容易记混,我们代入到现实即可。
|
||||||
|
|
||||||
|
我们求深度时,从上往下测量,求高度时,从下往上测量,节点的高度和深度也是如此。
|
||||||
|
|
||||||
## 二叉树
|
## 二叉树
|
||||||
|
|
||||||
我们刷题时遇到的就是二叉树啦,下面我们一起来了解一下二叉树
|
我们刷题时遇到的就是二叉树啦,下面我们一起来了解一下二叉树
|
||||||
@ -349,3 +376,19 @@ class Solution {
|
|||||||
|
|
||||||
- **leetcode 107. 二叉树的层序遍历 II**
|
- **leetcode 107. 二叉树的层序遍历 II**
|
||||||
|
|
||||||
|
- **leetcode 103. 二叉树的锯齿形层序遍历**
|
||||||
|
|
||||||
|
上面两道题仅仅是多了翻转
|
||||||
|
|
||||||
|
- **leetcode 199. 二叉树的右视图**
|
||||||
|
- **leetcode 515. 在每个树行中找最大值**
|
||||||
|
- **leetcode 637. 二叉树的层平均值**
|
||||||
|
|
||||||
|
这三道题,仅仅是加了一层的一些操作
|
||||||
|
|
||||||
|
- **leetcode 116 填充每个节点的下一个右侧**
|
||||||
|
- **leetcode 117 填充每个节点的下一个右侧2**
|
||||||
|
|
||||||
|
这两个题对每一层的节点进行链接即可。
|
||||||
|
|
||||||
|
大家可以去顺手解决这些题目,但是也要注意一下其他解法,把题目吃透。不要为了数目而刷题,好啦,今天的节目就到这里啦,我们下期见!
|
Loading…
Reference in New Issue
Block a user