二叉树(4)- 精进练习

题目汇总

654. 最大二叉树

998. 最大二叉树 II

617. 合并二叉树

700. 二叉搜索树中的搜索

270. 最接近的二叉搜索树值

701. 二叉搜索树中的插入操作(找到满足条件的叶子节点截形插值操作)

98. 验证二叉搜索树(关键是和双亲比)

530. 二叉搜索树的最小绝对差(升序数组,最小绝对值差一定在相邻两个元素之间,中序遍历保留单调性)

501. 二叉搜索树中的众数

236. 二叉树的最近公共祖先

235. 二叉搜索树的最近公共祖先

701. 二叉搜索树中的插入操作

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

669. 修剪二叉搜索树

108. 将有序数组转换为二叉搜索树

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

小结:参考


具体详解

654. 最大二叉树

1)问题描述

2)分析

分析思路

3)代码实现

代码实现

501. 二叉搜索树中的众数

1)问题描述

二叉搜索树中的众数问题描述

2)分析

方法一:中序遍历二叉搜索树,其结果保留了单调性,因此可以通过中序遍历来实现(代码实现)

方法二:沿用一思路,为了节省空间(o(1)效果),关键是找到当前节点的前驱和后继。对于中序遍历来说,某棵(子)树的“根节点”的前驱一定位于左孩子的某个位置上,后继显然就是右孩子了。如果没有右孩子,就把当前节点当作“前驱”存储起来【联想链表】。(代码实现)

236. 二叉树的最近公共祖先

1)问题描述

寻找共同祖先问题描述

2)分析(参考)

最近公共祖先的定义: 设节点 root为节点 p, q的某公共祖先,若其左子节点 root.left 和右子节点 root.right都不是 p,q的公共祖先,则称 root是 “最近的公共祖先” 。

祖先的定义
实例

3)代码实现

寻找最近共同祖先代码实现

你可能感兴趣的:(二叉树(4)- 精进练习)