前端工程师leetcode算法面试必备-二叉树深度广度遍历

本文介绍了二叉树的深度优先搜索(DFS)和广度优先搜索(BFS)算法,包括二叉树层次遍历、后序遍历和垂序遍历的递归与迭代实现。讲解了使用JavaScript解决LeetCode相关问题的思路,强调了算法在面试中的重要性。
摘要由CSDN通过智能技术生成

一、前言

Medium 难度主要考察结合二叉树性质的 CRUD 操作,而这一切的基础都离不开遍历二叉树。

二叉树是图的子集,因而同样适用以下两种搜索思想:

  • **DFS(深度优先搜索):**沿着根节点递归下去,遇到叶子节点则向上回溯

  • **BFS (广度优先搜索):**按照二叉树的层次访问,通常采用队列保存每个层次的节点

由于二叉树本身的定义就是递归的,所以采用递归处理起来,代码更容易理解。但是递归的效率相对比较慢,主要原因在于:一个函数被调用的时间和空间成本开销很大,递归太多很可能导致调用栈溢出的问题。上一篇中也提到可以采用尾递归的书写方式,让 JavaScript 引擎去将递归优化成迭代,从而解决性能上的问题。

但是在一些情况下,尾递归并没有那么好写,所以本文会同时给出递归和迭代的解决方案。

接下来,通过具体的题目解析,带大家了解 DFS 和 BFS 搜索思想在二叉树中的应用。

二、102. 二叉树的层次遍历

给定一个二叉树,返回其按层次遍历的节点值。(即逐层地,从左到右访问所有节点)。

1、BFS

这道题目要求按层次遍历节点,很符合 BFS 搜索思想的定义,所以代码也很好理解。

这里需要利用队列(queue)来保存每

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值