二叉树完整总结

本文详细探讨了二叉树的遍历方法(递归与迭代),如层次结构的处理、二叉搜索树特性,以及各种操作如构造、搜索、删除、路径和计算等,包括完全二叉树的相关概念。通过实例和递归/迭代策略,展示了如何在二叉树结构中实现关键功能。
摘要由CSDN通过智能技术生成

遍历

前/中/后

递归法:正常,没啥

迭代法:while+stack迭代,稍稍注意中序时候要用指针辅助,前/后方法相同

层级

        用queue, while里用for限制添加节点

        199. Binary Tree Right Side View

        存每一层,把每一层末尾元素填进结果

257. 二叉树所有路径

        先到leaf,在后序位置添加上一层,返回vec数组

二叉树的最近公共祖先

         后序位置操作,返回找到了的二选一

        *和二叉搜索树对比

构造

106. 从中序和后序序列构造

        法1:记住left可以等于right,不要右开区间

105. 从前序和中序构造

        法2优化:用map把中序的值index存起来,

最大二叉树

判断二叉树特点

101. 对称二叉树

        双指针递归

110. 平衡二叉树

        定义:左子树高度和右子树高度相差1

        同样可以用递归,自下而上一旦不行就返回-1

543. 二叉树直径

        直径不一定经过root,所以每个节点都要遍历,就是比较左最大深度加右最大深度

二叉树操作

226. 翻转二叉树

        在后序位置进行翻转,

104.最大深度

        递归思路,比较左右最大深度

111.最小深度

        不同点在于对于空子树不计算深度(不能说0比其他小),还是要走到叶子然后比较深度。所以要检验nullptr,但是是小点,大体思路一样

404. 左叶子之和

        左叶子的上一个root才能判断是否为叶子(需要用到root->left->left, root->left->right)

513. 找树左下角的值

        最后一层的leftmost节点,没说是左/右子节点。

        那么其实就是第一次更新深度时的那个节点值

Path Sum 路径总和

        1)从root开始,看是否有路径和为target的,返回bool

                用回溯,定义一个global

        2)从root开始,看是否有路径和为target, 返回所有路径

                标准回溯

        437 3) 不从root开始,看有多少条路径和为target(不一定到最底层)

                前缀和的一道题

                回溯遍历,前序位置进行加法操作,

                

619. 合并二叉树

        前序位置操作,空缺直接补

扁平化二叉树(将二叉树转成链表)

        在后序位置操作,递归得到结果

*二叉搜索树

98. 有效二叉搜索树

        利用辅助节点minNode和maxNode,二叉搜索树性质——左子树节点(all) < 根 < 右子树节点(all)

        二叉搜索树利用中序遍历

二叉搜索树中的搜索

        比较root节点值

530. 二叉搜索树的最小绝对差

        利用二叉搜索树单调递增,最小绝对差就是遍历边

        二叉树+双指针

502. 二叉搜索树中的众数

        还是利用二叉搜索树的递增性质

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

        直接利用性质:往下找到第一个在两个值中间的节点就是最近公共祖先。

        *和二叉树对比       

701. 二叉搜索树插入

        使用递归,在最底层创建节点,由上一次调用的root->left 或 root->right接住

450. 二叉搜索树删除(挺复杂)

        先分3种情况删,在前序位置操作,然后用插入的方法,上一次调用接住        

669.修剪二叉搜索树

        让二叉搜索树在【low, high】的范围内

        这题也好,锻炼设计递归。要点在于返回合法节点        

108. 二叉搜索树构造:有序数组转成高度相等的二叉搜索树

        尽量二分,左闭右闭

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

        需要利用上一个遍历位置的元素时考虑用双指针

第k个最小元素

        直接遍历,取第k个,利用二叉搜索树的递增属性

*完全二叉树

222.完全二叉树节点个树

定义:除最后一行其余全满

用递归,自下而上得到答案

  • 6
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值