LeetCode-102 层次遍历

这篇博客详细介绍了LeetCode第102题的解决方案,即二叉树的层次遍历。文章指出,该问题可以通过广度优先搜索(BFS)策略解决,返回每层节点组成的二维数组。作者提到了两种实现方式:一是用队列保存节点及其所在层数,二是使用哈希表记录节点和层数的关系。虽然线性表也可行,但因其查找效率低而不推荐使用。
摘要由CSDN通过智能技术生成
一、思路

这道题使用的是二叉树的广度优先遍历,也就是层次遍历。与单纯的层次遍历不同的地方在于,这个问题要求返回的遍历结果是一个二维数组,一行代表树的一层。但是总的思路还是和层次遍历没有区别。
为了知道二叉树中每一个节点位于书的哪一层的问题需要标识每一个节点所在的层数,并根据层次遍历时的节点,对其子节点进行标识。在这里我想到的方法有两种:第一种是建一个队列保存节点的层数,与层次遍历的队列保持一一对应;第二种是建一个哈希表,来实现每一个节点和其层数之间的对应关系。这里的标识方法甚至都可以使用线性表,但是考虑到查找的效率太低,故不使用线性表。

二、代码
class Solution {
   
public:
    vector<vector<int>> levelOrder(TreeNode* root) {
   
        queue<TreeNode*> q;
        queue<int> qDepth;
        vector< vector<int> > ans
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值