二叉树专题

二叉树

概述

  1. 二叉树的先序遍历中序遍历后序遍历以及层序遍历是所有二叉树相关算法题的基础
  2. 遇到二叉树相关的问题,首先想到的肯定是递归

二叉树的遍历

  1. 144. 二叉树的前序遍历
  2. 94. 二叉树的中序遍历
  3. 145. 二叉树的后序遍历
  1. 前、中、后序遍历方式的递归写法相对简单,但是迭代法也需要掌握
  2. 迭代法求解前序遍历的方式与层序遍历相同,区别在于
    (1)将队列改为
    (2)插入时先插入右子节点再插入左子节点
  3. 前序遍历中要访问的元素和要处理的元素是一致的,中序后序遍历中要访问的元素和要处理的元素是不一致的,因此在迭代中会带来困难
    (1)访问:遍历节点
    (2)处理:将该节点的值加入结果数组中
  4. 后序遍历前序遍历的序列之间是有关系的,因此只需要在前序遍历迭代代码中将左右子树加入顺序翻转,然后再将结果数组翻转即可
  5. 参考连接1中提供了一种统一的迭代解法

在这里插入图片描述

  1. 102. 二叉树的层序遍历
  2. 107. 二叉树的层序遍历 II
  3. 103. 二叉树的锯齿形层序遍历
  1. 层序遍历首先想到的就是用队列来存储节点
  2. 102. 二叉树的层序遍历只需要使用单层while循环即可

序列化与反序列化

  1. 先序+中序后序+中序可以构建二叉树,但二叉树中不能出现值重复的结点,否则无法创建
  2. 另一种序列化方式遇到nullptr用特殊字符替代

在这里插入图片描述

  1. 剑指 Offer 07. 重建二叉树
  2. 剑指 Offer 37. 序列化二叉树

二叉树+回溯

  1. 剑指 Offer 34. 二叉树中和为某一值的路径

二叉排序树

  1. 二叉排序树是一种特殊的二叉树,左子树的所有结点值小于根结点,右子树的所有结点值大于根结点

在这里插入图片描述

序列化与反序列化

  1. 根据二叉排序树的先序后序遍历序列都是可以进行反序列化重建唯一的二叉排序树,可以使用递归或单调栈完成
  2. 中序遍历序列构建的二叉排序树不唯一,但一般要求创建平衡的二叉排序树(仍然不唯一),递归+二分法
  1. 1008. 前序遍历构造二叉搜索树
  2. 剑指 Offer 33. 二叉搜索树的后序遍历序列
  3. 108. 将有序数组转换为二叉搜索树
  1. 判断二叉排序树的中序遍历序列很简单,不用考虑
  2. 判断是否是先序或后续序遍历序列时,考虑使用基本解法即递归法、高级解法可以使用单调栈
    (1)递归方式是通过逐渐地确定左右子树的左右边界来递归完成

二叉搜索树+双向链表

  1. 剑指 Offer 36. 二叉搜索树与双向链表
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

m0_46427273

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值