主要概念:
- 二叉树
- 完全二叉树
- 满二叉树
- 完全平衡的二叉搜索树:一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1
- 二叉搜索树
- 前缀树
- 应用:
- 搜索
- 拼写检查
- 输入预测
- 应用:
- 线段树
遍历树的方法:
- dfs(递归,分自上而下,自下而上):
- 前序
- 中序
- 后序
- bfs(迭代)
TIPS:
- 二叉搜索树的中序遍历是一个升序序列
- 前、中、后序遍历均不能唯一确定一棵二叉搜索树,中序+后序、中序+先序可以唯一确定一棵二叉树
- 前中后序的关系:inorder = sorted(postorder) = sorted(preorder)
高频题目:
96. 不同的二叉搜索树
解法:
- 动态规划
- 卡特兰数
- 利用二叉搜索树的特点,递归
- 利用二叉搜索树的特点和中序遍历,比较遍历得到的数组
101. 对称二叉树
解法:
- 遍历比较
- 迭代比较(队列)
- dfs解法
- 迭代(栈)
需要知道前中后序遍历各自的特点
解法:
- 中序遍历创建
110. 平衡二叉树链接
解法:
- 递归(自上而下,依据:有每个节点左右子树高度差不大于 1 时,该树才是平衡的)
- 推荐自下而上的递归(后序遍历的应用),这样每个子节点只需要比较一次
- 递归,dfs
- 迭代,dfs
- 推荐,不需要遍历所有节点迭代,bfs
- 递归不懂
- 中序遍历=》数组=》实现next(),hasNext()
- 不会。。
226. 翻转二叉树
解法:
- 递归
- 迭代
235. 二叉搜索树的最近公共祖先
解法(利用二叉搜索树的特点):
- 递归
- 迭代
- 递归(主要想清楚边距条件)
- 推荐存储父节点(map+set)
- 递归
- 迭代
261 充钱
270 充钱
297.二叉树的序列化与反序列化
tips:
- 序列化与反序列化
- 递归
298 充钱
314 充钱
