leetcode二叉树探索

本文总结了在LeetCode中刷二叉树题目时的经验,重点介绍了前序、中序、后序和层次遍历四种方法。强调了前序遍历的重要性,并提供了思考问题的通用思路。建议在遇到二叉树问题时,根据题目要求对应选择合适的遍历方式,先实现能运行的解决方案,再逐步优化。
摘要由CSDN通过智能技术生成

前序遍历

中序遍历

后序遍历

层次遍历

今天刷了该标签的题, 自己速度还是慢, 总结一下经验分享给大家.

该标签所有的题都围绕着四个遍历.
特别是用递归遍历二叉树,一定要牢牢掌握.

套路如下

    def visit(node){
        //前序
        visit(node.left)
        //中序
        visit(node.right)
        //后序
    }

感觉有点简单? 你细品. 什么问题是三选一,什么问题是全都要呢?

首先要把树与递归牢牢联系起来,

遍历方法
最大深度后序遍历
路径总和前序
从中序和后序构造二叉树前序
序列化与反序列化前序
填充右侧节点层次

前序遍历DFS是不是用的很多?
为啥呢?
其实我也不知道他为啥那么多. 但他是打头的, 那就好好看看琢磨琢磨DFS.
既然DFS出现的多, 那就自己列一个小表.

  1. 先前序遍历DFS
  2. 后序遍历
  3. 层次遍历BFS
  4. 中序遍历
  5. 混合

看到二叉树的题,就挨个对一遍.

然后把条件往里面填不就好了,

    def visit(node){
        //1.前序
        visit(node.left)
        //2.中序
        visit(node.right)
        //3.后序
    }
  • 一般if node == None和构造新节点在1.,
  • 几乎没有东西放在2.,
  • 比大小的,返回真假的在3..

至于层次遍历, 运用队列先进先出, 控制好每层个数不就好了.

有人会说递归性能不好, 没有迭代nb,u1s1确实,
但是

切记过早优化是万恶之源

先写出来能跑的, 再跑对, 之后积累大量经验再说优化.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值