leetcode二叉树刷题调试不方便的解决办法

1. 二叉树不易构建

在leetcode中刷题时,如果没有会员就需要将代码拷贝到本地的编译器进行调试。但是leetcode中有一类题可谓是毒瘤,那就是二叉树的题。

要调试二叉树有关的题需要根据测试用例给出的前序遍历,自己构建一个二叉树,非常不方便。

作为一个懒人,在此之前我的解决办法就是硬看程序,反复检查,但是确实有点折磨了。

前几天在刷二叉树有关的题时心血来潮写了一个函数来帮助构建二叉树。

2. 代码

#include <iostream>
#include <queue>
using namespace std;
#define null -1struct TreeNode {int val;TreeNode *left;TreeNode *right;TreeNode() : val(0), left(nullptr), right(nullptr) {}TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}
};TreeNode* construct(vector<int>& nums)
{int n = nums.size();TreeNode* newnode = nullptr;queue<TreeNode*> q;if (n != 0){int i = 0;newnode = new TreeNode(nums[i++]);q.push(newnode);while (!q.empty()){if (i < n && nums[i] != null){q.front()->left = new TreeNode(nums[i]);q.push(q.front()->left);}i++;if (i < n && nums[i] != null){q.front()->right = new TreeNode(nums[i]);q.push(q.front()->right);}i++;q.pop();}}return newnode;
}

leetcode给出的前序遍历中,空结点通常用null来表示,在程序中我们可以用一个数据范围之外的数来表示空结点,并将null定义为这个数。上面的代码中用的是-1。

我们用这个函数来帮助我们调试上面的这道题:

#include <iostream>
#include <vector>
#include <queue>
using namespace std;
#define null -1struct TreeNode {int val;TreeNode *left;TreeNode *right;TreeNode() : val(0), left(nullptr), right(nullptr) {}TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}
};class Solution {
public:TreeNode* ans;int count, ansCount;int dfs(TreeNode* root){if (root == nullptr) return 0;count++;int left = dfs(root->left);int right = dfs(root->right);count--;if (left == right && count + left >= ansCount){ans = root;ansCount = count + left;}return max(left, right) + 1;}TreeNode* lcaDeepestLeaves(TreeNode* root) {ans = nullptr;count = ansCount = 0;dfs(root);return ans;}
};TreeNode* construct(vector<int>& nums)
{int n = nums.size();TreeNode* newnode = nullptr;queue<TreeNode*> q;if (n != 0){int i = 0;newnode = new TreeNode(nums[i++]);q.push(newnode);while (!q.empty()){if (i < n && nums[i] != null){q.front()->left = new TreeNode(nums[i]);q.push(q.front()->left);}i++;if (i < n && nums[i] != null){q.front()->right = new TreeNode(nums[i]);q.push(q.front()->right);}i++;q.pop();}}return newnode;
}int main()
{vector<int> nums = { 3,5,1,6,2,0,8,null,null,7,4 };cout << Solution().lcaDeepestLeaves(construct(nums))->val << endl;
}

这下就方便多了。

如果函数的返回值是 TreeNode* 的话,主函数的写法也可以直接照搬。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/75677.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

蓝桥杯嵌入式客观题二

十四届模拟一 1. 2.串口通信是一种传输线按位数据顺序传输方式 3.USART_SR是属于STM32微控制器USART的状态寄存器。 4.STM32G431RBT6是32位的ARM微控制器 ARM处理器是英国ARM公司设计的一种低功耗RISC微处理器 5.中断配置‌EXTI->FTSR&#xff08;下降沿触发选择寄存器…

OrangePi入门教程(待更新)

快速上手指南 https://www.hiascend.com/developer/techArticles/20240301-1?envFlag1 教学课程(含开发板配置和推理应用开发) https://www.hiascend.com/developer/devboard 开发推理应用 https://www.hiascend.com/developer/techArticles/20240326-1?envFlag1

王者荣耀的游戏匹配机制

王者荣耀的匹配机制主要基于ELO评分系统&#xff08;隐藏分机制&#xff09;和段位匹配&#xff0c;旨在平衡对局双方实力&#xff0c;同时通过多种策略控制玩家胜率趋近50%。 一、匹配机制核心 1. ELO评分&#xff08;隐藏分&#xff09; - 系统根据玩家的胜负、KDA、伤害量、…

PPTAgent:一款开源免费生成和评估幻灯片的项目

这篇文章介绍一下PPTAgent&#xff0c;一个从文档自动生成演示文稿的创新系统。该系统从人类的展示创作方法中汲取灵感&#xff0c;采用两步流程来确保卓越的整体质量。此外&#xff0c;本文还介绍了PPTEval&#xff0c;这是一个综合评估框架&#xff0c;可以跨多个维度评估演示…

谷歌开源单个 GPU 可运行的Gemma 3 模型,27B 超越 671B 参数的 DeepSeek

自从 DeepSeek 把训练成本打下来之后&#xff0c;各个模型厂家现在不再堆参数进行模型的能力对比。而是转向了训练成本优化方面&#xff0c;且还要保证模型能力不减反增的效果。包括使用较少的模型参数&#xff0c;降低 GPU 使用数量&#xff0c;降低模型内存占用等等技术手段。…

回归预测 | Matlab实现NRBO-Transformer-LSTM多输入单输出回归预测

回归预测 | Matlab实现NRBO-Transformer-LSTM多输入单输出回归预测 目录 回归预测 | Matlab实现NRBO-Transformer-LSTM多输入单输出回归预测预测效果基本介绍程序设计参考资料 预测效果 基本介绍 1.【JCR一区级】Matlab实现NRBO-Transformer-LSTM多输入单输出回归预测&#xf…

Photoshop 2025 Mac中文Ps图像编辑

Photoshop 2025 Mac中文Ps图像编辑 文章目录 Photoshop 2025 Mac中文Ps图像编辑一、介绍二、效果三、下载 一、介绍 Adobe Photoshop 2025 Mac版集成了多种强大的图像编辑、处理和创作功能。①强化了Adobe Sensei AI的应用&#xff0c;通过智能抠图、自动修复、图像生成等功能…

7. 记忆(Memory)机制:让AI拥有“短期记忆”与“长期记忆”

引言&#xff1a;当AI学会"记住你" 2025年某银行智能客服因无法记住用户身份&#xff0c;每次对话都要求重复验证&#xff0c;引发大量投诉。引入LangChain 记忆系统后&#xff0c;客户满意度提升62%。本文将基于MemorySaver与FAISS本地存储&#xff0c;教你构建符合…

【Python使用】嘿马云课堂web完整实战项目第3篇:增加数据,修改数据【附代码文档】

教程总体简介&#xff1a;项目概述 项目背景 项目的功能构架 项目的技术架构 CMS 什么是CMS CMS需求分析与工程搭建 静态门户工程搭建 SSI服务端包含技术 页面预览开发 4 添加“页面预览”链接 页面发布 需求分析 技术方案 测试 环境搭建 数据字典 服务端 前端 数据模型 页面原…

论文笔记(七十五)Auto-Encoding Variational Bayes

Auto-Encoding Variational Bayes 文章概括摘要1 引言2 方法2.1 问题场景2.2 变分下界2.3 SGVB估计器与AEVB算法2.4 重参数化技巧 3 示例&#xff1a;变分自编码器&#xff08;Variational Auto-Encoder&#xff09;4 相关工作5 实验6 结论7 未来工作 文章概括 引用&#xff1…

Python3 学习笔记

Python3 简介 | 菜鸟教程 一 Python3 简介 Python 是一个高层次的结合了解释性、编译性、互动性和面向对象的脚本语言。 Python 的设计具有很强的可读性&#xff0c;相比其他语言经常使用英文关键字&#xff0c;其他语言的一些标点符号&#xff0c;它具有比其他语言更有特色…

Java实现N皇后问题的双路径探索:递归回溯与迭代回溯算法详解

N皇后问题要求在NN的棋盘上放置N个皇后&#xff0c;使得她们无法互相攻击。本文提供递归和循环迭代两种解法&#xff0c;并通过图示解释核心逻辑。 一、算法核心思想 使用回溯法逐行放置皇后&#xff0c;通过冲突检测保证每行、每列、对角线上只有一个皇后。发现无效路径时回退…

前端判断值相等的方法和区别

1. (宽松相等) 在比较之前会进行类型转换 可能导致一些意外的结果 0 // true 0 0 // true false 0 // true null undefined // true [1,2,3]1,2,3 // true2. (严格相等) 不进行类型转换 类型和值都必须相同 0 // false 0 0 // false false 0 /…

Socket编程UDP

Socket编程UDP 1、V1版本——EchoServer2、网络命令2.1、ping2.2、netstat2.3、pidof 3、验证UDP——Windows作为client访问Linux4、V2版本——DictServer5、V3版本——简单聊天室 1、V1版本——EchoServer 首先给出EchoServer目录结构&#xff1a;服务器的类我们实现在UdpServ…

辅助查询是根据查询到的文档片段再去生成新的查询问题

&#x1f4a1; 辅助查询是怎么来的&#xff1f; 它是基于你当前查询&#xff08;query&#xff09;检索到的某个文档片段&#xff08;chunk_result&#xff09;&#xff0c;再去“反推”出新的相关问题&#xff08;utility queries&#xff09;&#xff0c;这些问题的作用是&a…

2025 年 4 月补丁星期二预测:微软将推出更多 AI 安全功能

微软正在继续构建其 AI 网络安全战略&#xff0c;并于本月宣布在 Microsoft Security Copilot 中引入新代理。 他们引入了用于网络钓鱼分类的代理、用于数据丢失预防和内部风险管理的警报分类、条件访问优化、漏洞修复和威胁情报简报。 这些代理的目标是不断从这些不同学科中…

【LLM系列】1.大模型简介

1. 基础 1.1 如何权衡模型的复杂度和性能&#xff1f; ├── a. 模型架构选择 │ ├── 简化架构 │ │ └── 选择较小的网络层数和宽度&#xff0c;降低复杂度&#xff1b; │ │ 可使用高性能基础模型如 Transformers 作为起点&#xff0c;根据需求缩放模型。 │ └──…

【leetcode】记录与查找:哈希表的题型分析

前言 &#x1f31f;&#x1f31f;本期讲解关于力扣的几篇题解的详细介绍~~~ &#x1f308;感兴趣的小伙伴看一看小编主页&#xff1a;GGBondlctrl-CSDN博客 &#x1f525; 你的点赞就是小编不断更新的最大动力 &#x1f386;那么废话不…

优选算法的妙思之流:分治——快排专题

专栏&#xff1a;算法的魔法世界 个人主页&#xff1a;手握风云 目录 一、快速排序 二、例题讲解 2.1. 颜色分类 2.2. 排序数组 2.3. 数组中的第K个最大元素 2.4. 库存管理 III 一、快速排序 分治&#xff0c;简单理解为“分而治之”&#xff0c;将一个大问题划分为若干个…

二叉树的ACM板子(自用)

package 二叉树的中序遍历;import java.util.*;// 定义二叉树节点 class TreeNode {int val; // 节点值TreeNode left; // 左子节点TreeNode right; // 右子节点// 构造函数TreeNode(int x) {val x;} }public class DMain {// 构建二叉树&#xff08;层序遍历方式&…