Tree
Basic Concept
What is Tree:
仅有唯一一个根节点,没有则为空树
除根节点外,每个节点都有且仅有一个父节点
节点间不能形成闭环
node、root、brother node、leaf node、parent node、child node
branch
level:根为第一层,根的孩子为第二层,依此类推
height of node:叶子节点到该节点的最长路径,根节点的高度为树的高度
depth of node:从根节点到该节点所经历的边的个数(根节点的深度和叶子节点的高度都是 0)
width
二叉树,三叉树... N 叉树,由其子节点最多可以有几个决定,最多有 N 个就是 N 叉树
==完全二叉树==:深度为
h,除第h层外,其它各层(1 ~ h-1)的结点数都达到最大个数,第h层所有的结点都连续集中在最左边
==满二叉树==:除了叶结点外每一个结点都有左右孩子且叶子结点都处在最底层的二叉树
==二叉搜索树==:左孩子节点值均==小于==该节点值、右孩子节点值均==大于==该节点值,该节点的左、右子树也分别为二叉搜索树
平衡二叉搜索树(AVL):既满足左右子树高度差不大于 1, 又满足任意节点值大于它的左孩子节点值,小于它右孩子节点值

红黑树
节点是红色或黑色
根节点必须是黑色节点
所有的叶子节点都必须是值为 NULL 的黑节点
如果一个节点是红色的,则它两个子节点都是黑色的
从任一节点到达它的每个叶子节点的所有的路径,都有相同数目的黑色节点

Trie(字典树或前缀树,它是用来处理字符串匹配问题的数据结构,以及用来解决集合中查找固定前缀字符串的数据结构,高效的存储和查找字符串)
解题要素
一个中心:遍历
两个基本点:DFS(
preorder/inorder/postorder使用 stack)、BFS(迭代,使用 queue)三种题型:搜索类、构建类、修改类
四个重要概念:二叉搜索树(==中序遍历是有序的==)、完全二叉树、路径、距离
七个技巧
dfs(root)
单/双递归(如果题目有类似,任意节点开始
xxx或者所有xxx这样的说法,就可以考虑使用双递归,但是如果递归中有重复计算,则可以使用双递归 + 记忆化或者直接单递归)
前后遍历
自顶向下:就是在每个递归层级,首先访问节点来计算一些值,并在递归调用函数时将这些值传递到子节点,一般是通过参数传到子树中自底向上:是另一种常见的递归方法,首先对所有子节点递归地调用函数,然后根据返回值和根节点本身的值得到答案
虚拟节点
边界
参数扩展大法
返回元组/列表
Binary Tree Problem List

Binary Tree Traversal
Preorder/Inorder/Postorder
Level Traversal
Others
Binary Search Tree
CRUD
Others
DFS/BFS
Path Sum
Serialize/Deserialize
Last updated