2020年10月17日大约 3 分钟
顾名思义,就是一个节点分出两个节点,称其为左右子节点;每个子节点又可以分出两个子节点,这样递归分叉,其形状很像一颗倒着的树。
二叉树限制了每个节点最多有两个子节点,没有子节点的节点称为叶子。
二叉树引导出很多名词概念,这里先不做系统介绍,遇到时再结合例子一一说明。
如下一个二叉树:
/* A simple binary tree
* A ---------> A is root node
* / \
* / \
* B C
* / / \
* / / \
* D E F ---> leaves: D, E, F
*
* (1) ---> Height: 3
*/
2020年10月17日大约 43 分钟
前面我们学习了 java 如何实现 binary search 二分查找法?。
那么,有没有一种数据结构,可以让我们更好的实现二分查找呢?
有的,那就是我们今天的二叉查询树。
让我们从二叉树开始,一起完成这次查询的学习之旅吧。
二叉树(Binary Tree)
概念
顾名思义,就是一个节点分出两个节点,称其为左右子节点;每个子节点又可以分出两个子节点,这样递归分叉,其形状很像一颗倒着的树。
2020年10月17日大约 23 分钟
AVL树
AVL树是根据它的发明者G.M. Adelson-Velsky和E.M. Landis命名的。
它是最先发明的自平衡二叉查找树(Self-balancing binary search tree),也被称为高度平衡树。
2020年10月17日大约 8 分钟
2020年6月8日大约 4 分钟
常见刷题思维 | 高效刷题思维 |
---|---|
追求刷题数量 | 追求“知识模型”的构建 |
题型记不住、技巧忘了 | 把题归类、构建知识图谱 |
做过就忘、感觉无序 | 有计划、有归档、有复盘 |
二、对知识系统的分类
推荐专题划分顺序:
2020年6月8日大约 13 分钟
chat
系统分类
我们要构建一个更完整的「LeetCode 数据结构与算法知识图谱」:
- ✅ 覆盖 所有经典算法思想(排序、分治、扫描线、位运算等)
- ✅ 明确哪些算法和哪些数据结构强相关(比如:树 + DFS、堆 + 贪心)
- ✅ 按照学习难度 & 适配阶段循序渐进
- ✅ 易于整理成 笔记 / Notion / 题单
2020年6月8日大约 15 分钟
1. Two Sum 两数之和

题目
给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。
你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。
2020年6月8日大约 9 分钟
给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。
请你将两个数相加,并以相同形式返回一个表示和的链表。
你可以假设除了数字 0 之外,这两个数都不会以 0 开头。
例子
示例 1:

2020年6月8日大约 6 分钟
给定一个字符串 s ,请你找出其中不含有重复字符的 最长子串 的长度。
例子
示例 1:
输入: s = "abcabcbb"
输出: 3
解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。
2020年6月8日大约 4 分钟