news 2026/10/19 6:37:13

二叉树高频题目

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
二叉树高频题目

来自左神讲解,观看b站更精彩。

1.二叉树层序遍历

解法一

#include <iostream> #include <queue> #include <unordered_map> using namespace std; class LevelOrderTraversal { private: struct TreeNode { int val; TreeNode *left, *right; TreeNode() : val(0), left(NULL), right(NULL) {} TreeNode(int x) : val(x), left(NULL), right(NULL) {} }; unordered_map<TreeNode*, int> levels; public: vector<vector<int>> levelOrder(TreeNode* root) { if (!root) return {}; vector<vector<int>> vec; queue<TreeNode*> q; q.push(root); levels[root] = 0; while (!q.empty()) { TreeNode* node = q.front(); q.pop(); int level = levels[node]; if (node->left != nullptr) { q.push(node->left); levels[node->left] = level + 1; } if (node->right != nullptr) { q.push(node->right); levels[node->right] = level + 1; } if (vec.size() == level) { vec.push_back(vector<int>()); } vec[level].push_back(node->val); } return vec; } };

解法二(更推荐)

#include <iostream> #include <queue> #include <unordered_map> using namespace std; class LevelOrderTraversal { private: struct TreeNode { int val; TreeNode *left, *right; TreeNode() : val(0), left(NULL), right(NULL) {} TreeNode(int x) : val(x), left(NULL), right(NULL) {} }; unordered_map<TreeNode*, int> levels; public: static const int MAXN = 2001; TreeNode* queArray[MAXN]; int l, r = 0; vector<vector<int>> levelOrder(TreeNode* root) { if (!root) return {}; vector<vector<int>> ans; l = r = 0; // 初始化数组 queArray[r++] = root; // 将根节点入队 while (l < r) { int size = r - l; vector<int> list; for (int i = 0; i < size; ++i) { TreeNode* node = queArray[l++]; list.push_back(node->val); if (node->left != nullptr) { queArray[r++] = node->left; } if (node->right != nullptr) { queArray[r++] = node->right; } } ans.push_back(list); } return ans; } };
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/13 12:26:19

【Git核心操作实战】从初始化到冲突解决与回滚(附完整演示)

文章目录目录引言环境准备一、仓库初始化与首次提交1.1 初始化 Git 仓库1.2 创建 .gitignore 文件1.3 首次提交技术解析二、分支创建与多轮小步提交2.1 切出 feature 分支2.2 2-3 次小步提交第一次提交&#xff1a;新增功能基础文件第二次提交&#xff1a;实现核心逻辑第三次提…

作者头像 李华
网站建设 2026/10/14 16:10:38

基于CNN的车牌识别网络

前期准备 这篇博客记录神经网络方法与应用的实验项目&#xff0c;项目开源链接&#xff1a;【免费】神经网络课程设计项目.zip资源-CSDN下载 数据集 数据集是我本人在百度飞桨网站上找到的&#xff0c;这个数据集整理的很全面详细&#xff0c;数据集信息包含10w张训练照片&a…

作者头像 李华
网站建设 2026/10/18 11:00:05

Java Web Web足球青训俱乐部管理后台系统系统源码-SpringBoot2+Vue3+MyBatis-Plus+MySQL8.0【含文档】

摘要 足球青训俱乐部管理后台系统的开发旨在解决传统足球青训俱乐部在管理学员信息、课程安排、教练分配等方面效率低下的问题。随着足球运动的普及和青训体系的完善&#xff0c;俱乐部需要一套高效、智能化的管理系统来优化运营流程。传统的人工记录和Excel表格管理方式容易导…

作者头像 李华
网站建设 2026/10/13 12:55:38

TypeScript 的本质并非类型,而是信任

我有一支技术全面、经验丰富的小型团队&#xff0c;专注高效交付中等规模外包项目&#xff0c;有需要外包项目的可以联系我静态类型悄悄修好的&#xff0c;不只是语法错误&#xff0c;而是你们的精神状态。老实说&#xff0c;我第一次听到 TypeScript 的时候&#xff0c;脑子里…

作者头像 李华
网站建设 2026/10/17 21:09:57

WE Learn智能学习助手全面指南:三步解锁高效学习新体验

WE Learn智能学习助手全面指南&#xff1a;三步解锁高效学习新体验 【免费下载链接】WELearnHelper 显示WE Learn随行课堂题目答案&#xff1b;支持班级测试&#xff1b;自动答题&#xff1b;刷时长&#xff1b;基于生成式AI(ChatGPT)的答案生成 项目地址: https://gitcode.c…

作者头像 李华