二叉树-推导


能帮到你的话,就给个赞吧 😘


文章目录

二叉树推导

是否可以通过两颗子树相同问题的结果推导出树的答案(形式为递归)。

树 = 树的根节点 + 子树

题单01-推导(容易)

有些问题,非常容易看出可以通过子树的相同问题解决树的问题。

01 104. 二叉树的最大深度

非常容易看出可以通过子树的最大深度解决树的最大深度
即:子树的最大深度 + 1 = 树的最大深度

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

非常容易看出可以通过子树查找解决树的查找
即:子树查找 + 根节点查找 = 树的查找

03 100. 相同的树

非常容易看出可以通过子树相同解决树是否相同
即:子树相同 + 根节点相同 = 树相同

04 572. 另一棵树的子树

非常容易看出可以通过子树有无另一颗解决树有无另一颗
即:子树另一颗 + 根节点的树另一颗 = 树的另一棵树

可能会有疑问,根节点的树不就是自己吗,没错。
但这个仅仅是将原树与subRoot比较
而问题 另一棵树的子树 则还要再去子树查找。也就是
isSameTree(root, subRoot) != isSubtree(root, subRoot)
isSameTree是比较root和subRoot是否相同。而
isSubtree是在root中查找是否有subRoot存在

可见 自己!=自己。但自己的问题 定= 自己的问题。

05 1367. 二叉树中的列表

非常容易看出可以通过子树有无列表解决树有无列表
即:子树列表 + 根节点树列表 = 树的列表
同572

06 144. 二叉树的前序遍历

非常容易看出可以通过子树前序解决树的前序
即:根节点 + 子树前序 = 二叉树前序

07 105. 从前序与中序遍历序列构造二叉树

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

题单02-情况(容易)

有些问题依旧容易看出可以通过子树的相同问题解决。

但直观推论并不能通过。而是要结合错误,具体情况,具体分析。

01 112. 路径总和

树为叶子节点时 != 子树
而是
树为叶子节点时 = 根节点

02 938. 二叉搜索树的范围和

并非所有情况都 = 树的和,而是要分情况
树的根节点<范围
树的根节点>范围
树的根节点∈范围

03 111. 二叉树的最小深度

没有左树
没有右树
两树都有

04 114. 二叉树展开为链表

执行报错:null pointer
表示没有处理指针为空的情况
需要检查代码中哪些指针执行却没有提前判空

05 897. 递增顺序搜索树

1.你需要判断是处理子树,还是处理子树处理后的结果
可以对比111。如果仅仅是需要判断左树是否为空,则可直接判断,不需要处理子树。
2.子树处理后的结果并不会直接对应到root上.而是要手动连接

06 113. 路径总和 II

同112
树为叶子节点时 != 子树
= 根节点

题单03-时机(容易)(单独讲)

01 226. 翻转二叉树

02 1325. 删除给定值的叶子节点

03 998. 最大二叉树 II

题单04-转化(较难)

问题经过推导发现不能通过子树的相同问题解决。

但可发现原问题F = G,G可通过子树的相同问题解决

转化是比较难的,因为这两步都挺难的

01 101. 对称二叉树

1.子树对称 与 树对称 无关
2.两颗子树镜像 = 树对称
3.两颗子树镜像可通过子树镜像解决

题单05-综合

此题单需要综合知识点,但已经过筛选,都为推导

01 951. 翻转等价二叉树

116. 填充每个节点的下一个右侧节点指针

08 1110. 删点成林(练习)

04 124. 二叉树中的最大路径和(遍历)

02 894. 所有可能的真二叉树

如何不会被误导找关系呢。那就要往题目的信息方向去思考。
树中的每个元素都是一棵真二叉树的根节点。
例如 5的真二叉树,其左节点与右节点也是真二叉树。
那么其子树为(1,3)/(3,1) 加 根节点 = 5
例如 7 其左节点与右节点也是真二叉树。
那么其子树为(1,5)/(5,1)/(3,3) 加 根节点 = 7

会员

1430. 判断给定的序列是否是二叉树从根到叶的路径🔒

426. 将二叉搜索树转化为排序的双向链表🔒

1660. 纠正二叉树🔒

1490. 克隆 N 叉树🔒

1485. 克隆含随机指针的二叉树🔒

推导注意事项

1.需要判断是处理子树,还是处理子树处理后的结果

可见897 与 111

2.子树处理后的结果并不会直接对应到root上.而是要手动连接

可见897

3.null pointer报错时,需要检查哪些指针执行却没有判空

可见114

  • 10
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值