力扣labuladong一刷day32天二叉樹

力扣labuladong一刷day32天二叉樹

一、297. 二叉樹的序列化與反序列化

題目鏈接:https://leetcode.cn/problems/serialize-and-deserialize-binary-tree/
思路:關于序列化與反序列化,題目不要求序列化的方式,只要求樹經過序列化和反序列化之后依然一樣,如果序列化的過程中記錄了空節點則只通過前序或者后序就可以完整記錄二叉樹的信息,可以還原,但中序不可以。
我采用",“分割不同節點,”#"表示null。前序遍歷拼接字符串進行序列化,反序列化,也是前序遍歷,當然需要在進入遞歸之前new 一個節點,然后把遞歸的返回值設置為該節點的左右子節點。

public class Codec {StringBuilder builder = new StringBuilder();LinkedList<String> list = new LinkedList<>();public String serialize(TreeNode root) {traverse(root);return builder.toString();}public TreeNode deserialize(String data) {String[] split = data.split(",");for (String s : split) {list.add(s);}return create();}void traverse(TreeNode root) {if (root == null) {builder.append("#,");return;}builder.append(root.val).append(",");traverse(root.left);traverse(root.right);}TreeNode create() {if (list.isEmpty()) {return null;}String s = list.removeFirst();if ("#".equals(s)) return null;TreeNode node = new TreeNode(Integer.parseInt(s));node.left = create();node.right = create();return node;}
}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/206768.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/206768.shtml
英文地址,請注明出處:http://en.pswp.cn/news/206768.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

linux的定時任務Corntab

安裝crontab # yum安裝crontab yum install -y crontab# 開機自啟crond服務并現在啟動 systemctl enable --now crondcron系統任務調度 系統任務調度&#xff1a; 系統周期性所要執行的工作&#xff0c;比如寫緩存數據到硬盤、日志清理等。 在/etc/crontab文件&#xff0c;這…

機器學習之全面了解回歸學習器

我們將和大家一起探討機器學習與數據科學的主題。 本文主要討論大家針對回歸學習器提出的問題。我將概要介紹&#xff0c;然后探討以下五個問題&#xff1a; 1. 能否將回歸學習器用于時序數據&#xff1f; 2. 該如何縮短訓練時間&#xff1f; 3. 該如何解釋不同模型的結果和…

No suitable driver found for jdbc:mysql://localhost:3306(2023/12/7更新)

有兩種情況&#xff1a; 壓根沒安裝下載了但沒設為庫或方法不對 大多數為第一種情況&#xff1a; 一. 下載jdbc 打開網址選擇一個版本進行下載 https://nowjava.com/jar/version/mysql/mysql-connector-java.html 二.安裝jdbc 在項目里建一個lib文件夾 在把之前下載的jar文…

優化 SQL 日志記錄的方法

為什么 SQL 日志記錄是必不可少的 SQL 日志記錄在數據庫安全和審計中起著至關重要的作用&#xff0c;它涉及跟蹤在數據庫上執行的所有 SQL 語句&#xff0c;從而實現審計、故障排除和取證分析。SQL 日志記錄可以提供有關數據庫如何訪問和使用的寶貴見解&#xff0c;使其成為確…

JNPF低代碼平臺詳解 -- 系統架構

目錄 一、技術介紹 技術架構 二、設計原理 三、界面展示 1.代碼生成器 2.工作流程 3.門戶設計 4.大屏設計 5.報表設計 6.第三方登錄 7.多租戶實現 8.分布式調度 9.消息中心 四、功能框架 JNPF低代碼是一款新奇、實用、高效的企業級軟件開發工具&#xff0c;支持企…

Qt/C++音視頻開發58-逐幀播放/上一幀下一幀/切換播放進度/實時解碼

一、前言 逐幀播放是近期增加的功能&#xff0c;之前也一直思考過這個功能該如何實現&#xff0c;對于mdk/qtav等內核組件&#xff0c;可以直接用該組件提供的接口實現即可&#xff0c;而對于ffmpeg&#xff0c;需要自己處理&#xff0c;如果有緩存的數據的話&#xff0c;可以…

Rust的eBFP框架Aya(一) - Linux內核網絡基礎

前言 在我的Rust入門及實戰系列文章中已經說明&#xff0c; Rust是一門內存安全的高性能編程語言&#xff0c;從它的這些優秀特性來看&#xff0c;就是一門專為系統開發而誕生的語言。至于很多使用Rust來進行web開發的行為&#xff0c;不能說它們不好&#xff0c;只能說是殺雞…

2017下半年軟工(橋接模式)

題目——橋接模式&#xff08;抽象調用實現部分&#xff09; package org.example.橋接模式;/*** 橋接模式的核心思想是將抽象部分與它的實現部分分離&#xff0c;使它們可以獨立變化&#xff0c;就是說你在實現部分&#xff1a;WinImp、LinuxImp基礎上還能加上RedHatImp&#…

03-微服務架構構建之微服務拆分

文章目錄 前言一、微服務拆分的原則二、微服務拆分的時機三、微服務拆分的方法總結 前言 微服務架構是將一個單體應用程序拆分為一個個獨立且保持松耦合的服務的一種架構方式&#xff0c;每個服務有著獨立的數據庫并且能獨立運行部署。微服務架構的構建過程中&#xff0c;第一…

偷竊別人的密碼

在工作中都用到virtual machine吧&#xff0c;同事之間還互相借用機器&#xff0c;或者不借用但憑借自己的域賬號能登錄任意機器&#xff0c;而且每個域賬號都有sudo權限&#xff1f; 那你要小心了&#xff01; 因為我可以輕易記錄下每個ssh登錄到我機器&#xff0c;或者我在…

uniapp 輸入框輸入時,會將內容頂上去的解決方案

// 設置頁面最小高度 export const setPageMinHeight () > {return {position: relative,min-height: uni.getSystemInfoSync().windowHeight px} }頁面使用&#xff1a; import {setPageMinHeight} from "/utils/uniUtil";data() {return {minHeight: setPag…

Unity 狀態系統

狀態系統 原理食用方法Demo 原理 #mermaid-svg-lUbxJ8eMP3KqrEhY {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-lUbxJ8eMP3KqrEhY .error-icon{fill:#552222;}#mermaid-svg-lUbxJ8eMP3KqrEhY .error-text{fill:#55…

官方officevisio在線安裝包

在線安裝包&#xff0c;在線就是要有網絡環境&#xff0c;你能搜到這篇博客&#xff0c;就初步具備網絡環境 visio在線安裝包.zip官方版下載丨最新版下載丨綠色版下載丨APP下載-123云盤 在線安裝包如下&#xff0c;雙擊執行安裝即可&#xff0c;可供選擇的64/32位 軟件的激活與…

netty使用

支持協議 TCP/UDPHTTP/HTTPSWebSocketSPDY/HTTP2MQTT/CoAP 服務端 常用類 ServerBootstrap 服務端配置類 //設置線程組、parentGroup處理連接、childGroup處理I/O group(EventLoopGroup parentGroup, EventLoopGroup childGroup) //Channel通過何種方式獲取新的連接(NioSe…

【擴散模型】ControlNet從原理到實戰

ControlNet從原理到實戰 ControlNet原理ControlNet應用于大型預訓練擴散模型ControlNet訓練過程ControlNet示例1 ControlNet與Canny Edge2. ControlNet與Depth3. ControlNet與M-LSD Lines4. ControlNet與HED Boundary ControlNet實戰Canny Edge實戰Open Pose 小結參考資料 Cont…

Linux系統上RabbitMQ安裝教程

一、安裝前環境準備 Linux&#xff1a;CentOS 7.9 RabbitMQ Erlang 1、系統內須有C等基本工具 yum install build-essential openssl openssl-devel unixODBC unixODBC-devel make gcc gcc-c kernel-devel m4 ncurses-devel tk tc xz socat2、下載安裝包 1&#xff09;首先&a…

[linux] kaggle 數據集用linux下載

你可以通過以下步驟獲取Kaggle的下載鏈接并在Linux中進行下載&#xff1a; 首先&#xff0c;確保你已經安裝了Python和Kaggle API。如果沒有安裝&#xff0c;你可以通過以下命令安裝&#xff1a; pip install kaggle 接著&#xff0c;你需要在Kaggle網站上獲取API Token。登錄…

時間相關類

內容 JDK7時間相關類JDK8時間相關類 第一章 Date類 1.1 Date概述 java.util.Date類 表示特定的瞬間&#xff0c;精確到毫秒。 繼續查閱Date類的描述&#xff0c;發現Date擁有多個構造函數&#xff0c;只是部分已經過時&#xff0c;我們重點看以下兩個構造函數 public Dat…

【PyTorch】 暫退法(dropout)

文章目錄 1. 理論介紹2. 實例解析2.1. 實例描述2.2. 代碼實現2.2.1. 主要代碼2.2.2. 完整代碼2.2.3. 輸出結果 1. 理論介紹 線性模型泛化的可靠性是有代價的&#xff0c;因為線性模型沒有考慮到特征之間的交互作用&#xff0c;由此模型靈活性受限。泛化性和靈活性之間的基本權…

Docker構建自定義鏡像

創建一個docker-demo的文件夾,放入需要構建的文件 主要是配置Dockerfile文件 第一種配置方法 # 指定基礎鏡像 FROM ubuntu:16.04 # 配置環境變量&#xff0c;JDK的安裝目錄 ENV JAVA_DIR/usr/local# 拷貝jdk和java項目的包 COPY ./jdk8.tar.gz $JAVA_DIR/ COPY ./docker-demo…