leetcode刷题之二叉树题目分类

1. 自底向上+动态规划

1130. 叶值的最小代价生成树

##  二叉树

对于递归问题中的参数,一定要分清是需要传的值还是引用,如果某个变量需要在递归过程中改变则需要传引用,否则一般建议传值,比如230题如果用k表示遍历过节点的个数则传引用

### 双递归

1026. 节点与其祖先之间的最大差值

1367. 二叉树中的列表

1145. 二叉树着色游戏

1339. 分裂二叉树的最大乘积

优先选择x节点的相邻节点作为y节点的落子点,比如选择左孩子节点作为y的落子点,那么左孩子方向的节点红方都不能用。

分别统计x节点的左右孩子节点,父节点三个方向的节点个数,如果其中的一个方向的节点数比另外两个方向的节点树还多,那么y方就赢了。

### 重建二叉树

889. 根据前序和后序遍历构造二叉树

先确定根节点,然后分别确定左右子树的节点。

###自底向上(后序遍历)

能够根据子树推倒出, 这个特点其实也是动态规划的特点,只不过因为存在重叠子问题,而动态规划无非是利用空间换时间来解决重叠子问题。

337. 打家劫舍 III

自底向上,对每个根节点而言该节点可能被打击,也可能不被打击。被打劫时,其左右孩子节点不能被打击,不被打劫时,其孩子节点可能被打劫也可能不被打劫。

894. 所有可能的满二叉树

979. 在二叉树中分配硬币

1372. 二叉树中的最长交错路径

1530. 好叶子节点对的数量

687. 最长同值路径

后序遍历记录每个节点到所有叶子节点的距离,左右子树交叉比较所有节点是否满足条件。

记忆+后序遍历

1443. 收集树上所有苹果的最少时间

邻接表+dfs+seen标记

###自顶往下

951. 翻转等价二叉树

971. 翻转二叉树以匹配先序遍历

987. 二叉树的垂序遍历

988. 从叶结点开始的最小字符串

998. 最大二叉树 II

1008. 前序遍历构造二叉搜索树

1302. 层数最深叶子节点的和

1315. 祖父节点值为偶数的节点和

参数(sum & parent)扩展 + 前序遍历

偶数编号节点可能是根节点,先构建左右子树,再构建已当前节点为根的所有树。

1110. 删点成林

dfs返回节点可以建立父亲节点和孩子节点的关系,当出现需要删除的节点时则左右子树可能会成为新树,但是这个新树的根也可能是目标节点,因此需要再处理完成后移除空节点。

1448. 统计二叉树中好节点的数目

就是查找路径最大值

1261. 在受污染的二叉树中查找元素

1379. 找出克隆二叉树中的相同节点

1457. 二叉树中的伪回文路径

         前序+hash计数

###序列化与反序列化

652. 寻找重复的子树

序列化(注意区分1,11,111这种节点,节点和节点之间要有分隔符)+hash

###  路径问题

129. 求根到叶子节点数字之和

437. 路径总和 III

        双递归:多源搜索问题(所有xxxx)

### 二叉搜索树

96. 不同的二叉搜索树

173. 二叉搜索树迭代器

巧用非递归中序遍历

230. 二叉搜索树中第K小的元素

450. 删除二叉搜索树中的节点

538. 把二叉搜索树转换为累加树

1305. 两棵二叉搜索树中的所有元素

右中左遍历+参数扩展

865. 具有所有最深节点的最小子树  1123. 最深叶节点的最近公共祖先

层次遍历+最低公共祖先

### 层次遍历/BFS

199. 二叉树的右视图

513. 找树左下角的值

515. 在每个树行中找最大值

623. 在二叉树中增加一行

863. 二叉树中所有距离为 K 的结点

958. 二叉树的完全性检验

1609. 奇偶树

1161. 最大层内元素和

1466. 重新规划路线

父节点+访问记录表+层次遍历

### 完全二叉树

222. 完全二叉树的节点个数

从1开始编号,从上到下从左到右给完全二叉树编号,其二进制表示的特点是最高位为1表示从根节点出发,0表示沿着左节点往下,1表示沿着右节点往下。

完全二叉树只有最后一层节点不满,其节点编号为 [2^h,2^h-1] h为树的高度(h从0开始)。

919. 完全二叉树插入器

1104. 二叉树寻路

利用父节点和子节点编号之间的关系   假设父节点编号为i   则左孩子编号为2i 有孩子节点编号为2i+1, 如果是奇数行则编号与label一致,否则编号与其label则成对称关系,和为level_min+level_max

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值