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.pswp.cn/pingmian/75677.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/75677.shtml
英文地址,請注明出處:http://en.pswp.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;層序遍歷方式&…