LeetCode熱題100--101. 對稱二叉樹--簡單

1. 題目

給你一個二叉樹的根節點 root , 檢查它是否軸對稱。

示例 1:
在這里插入圖片描述
輸入:root = [1,2,2,3,4,4,3]
輸出:true

示例 2:
在這里插入圖片描述
輸入:root = [1,2,2,null,3,null,3]
輸出:false

2. 題解

/*** Definition for a binary tree node.* public class TreeNode {*     int val;*     TreeNode left;*     TreeNode right;*     TreeNode() {}*     TreeNode(int val) { this.val = val; }*     TreeNode(int val, TreeNode left, TreeNode right) {*         this.val = val;*         this.left = left;*         this.right = right;*     }* }*/
class Solution {public boolean isSymmetric(TreeNode root) {return root == null || recur(root.left,root.right);}boolean recur(TreeNode L , TreeNode R){if(L == null && R == null) return true;if(L == null || R == null || L.val != R.val) return false;return recur(L.left , R.right) && recur(L.right , R.left);}
}

3. 解析

  1. public boolean isSymmetric(TreeNode root): 這是主方法,接收一個類型為TreeNode的參數root。這個參數表示二叉樹的根節點。如果輸入的根節點(也就是整個二叉樹)不存在或者左子樹和右子樹對稱(即recur函數返回true),那么方法返回true;否則,返回false。

  2. boolean recur(TreeNode L , TreeNode R){: 這是輔助遞歸方法。它接收兩個類型為TreeNode的參數L和R,分別表示左子樹的根節點和右子樹的根節點。如果兩棵子樹都為空(即它們都是葉節點或空樹),那么這個函數返回true;否則,它會判斷以下條件:

  • 如果其中一棵子樹為空但另一棵不為空,那么這兩棵子樹不能被視為鏡像。因此,這兩個分支的遞歸調用都將返回false。
  • 如果兩棵子樹都不為空且它們的根節點的值相等(即這些位置上的元素相同),那么我們需要比較左子樹的左孩子和右子樹的右孩子以及左子樹的右孩子和右子樹的左孩子。只有當這兩個條件都滿足時(也就是說兩棵子樹是鏡像對應的),這個函數才返回true。
  1. return recur(L.left , R.right) && recur(L.right , R.left);: 在上面的條件判斷之后,我們使用這行代碼來遞歸地調用輔助方法recur(),以比較左子樹的左孩子和右子樹的右孩子以及左子樹的右孩子和右子樹的左孩子。
  • 如果這兩組節點(左子樹的左孩子和右子樹的右孩子;以及左子樹的右孩子和右子樹的左孩子)都滿足條件,那么這兩個函數調用將返回true,并且整個表達式recur(L.left , R.right) && recur(L.right , R.left)也將返回true。
  • 否則,它會返回false。

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

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

相關文章

Pub/Sub是什么意思

Pub/Sub(發布/訂閱模式)?? 是一種異步消息通信范式,用于分布式系統中不同組件之間的解耦通信。它的核心思想是將消息的發送方(發布者)?? 和接收方(訂閱者)?? 分離,通過一個中間…

Redisson3.14.1及之后連接阿里云redis代理模式,使用分布式鎖:ERR unknown command ‘WAIT‘

文章目錄一、問題背景1、問題原因2、阿里云對Redisson的支持二、解決方案1、繼續使用Redisson3.14.0版本2、阿里云redis改為直連模式3、升級Redisson版本到 3.47.0一、問題背景 1、問題原因 阿里云Redis分直連和代理模式,其中代理模式是不支持WAIT命令的。 目前嘗…

Linux: RAID(磁盤冗余陣列)配置全指南

Linux:RAID(磁盤冗余陣列)配置一、RAID 核心概念 RAID(Redundant Array of Independent Disks,磁盤冗余陣列)通過將多個物理磁盤組合為一個邏輯存儲設備,實現提升讀寫性能、增強數據安全性或平衡…

《GPT-OSS 模型全解析:OpenAI 回歸開源的 Mixture-of-Experts 之路》

目錄 一、引言 二、GPT-OSS 模型簡介 1. 版本與定位 2. 架構設計與技術亮點 2.1 Mixture-of-Experts(MoE)架構 2.2 高效推理機制與優化技術 2.3 模型對比 三、模型部署 1. 安裝相關依賴 1.1 uv 安裝 1.2 conda 安裝 1.3 Transformers 運行 g…

【力扣熱題100】雙指針—— 接雨水

題目 給定 n 個非負整數表示每個寬度為 1 的柱子的高度圖,計算按此排列的柱子,下雨之后能接多少雨水。 注意:答案中不可以包含重復的三元組。輸入:height [0,1,0,2,1,0,1,3,2,1,2,1] 輸出:6 解釋:上面是由…

51單片機拼接板(開發板積木)

一、前言 1.1 背景 讀書那會兒(2013年左右)網上接了很多51單片機的設計。 當時有個痛點: 每張板子都是定制的,畫板子,打樣,寫代碼需要花費很多時間。 希望有一張板子,能夠實現絕大多數單片機的功能&#xf…

使用segment-anything將目標檢測label轉換為語義分割label

使用segment-anything將目標檢測label轉換為語義分割label一、segment-anything簡介二、segment-anything安裝2.1安裝方法2.2預訓練模型下載三、將目標檢測label轉換為語義分割label3.1示例代碼3.2代碼說明一、segment-anything簡介 segment-anything是facebookresearch團隊開…

【unitrix數間混合計算】3.3 無符號整數標記trait(bin_unsigned.rs)

一、源碼 這段代碼是用 Rust 語言實現的一個類型級無符號二進制整數系統,通過類型系統在編譯時表示和操作二進制數字。這是一種典型的"類型級編程"(type-level programming)技術。 use crate::number::{U0, Bin, Bit, BinInt};/// …

Python基本語法總結

1.類(Class)在Python中類(Class)是面向對象編程(OOP)的核心概念。1.1.類的基本定義最簡單的類class Cat:"""這是一個最簡單的類"""pass #創建實例 obj Cat()包含方法的類cl…

數據結構05(Java)-- ( 歸并排序實質,歸并排序擴展問題:小和問題)

前言 本文為本小白🤯學習數據結構的筆記,將以算法題為導向,向大家更清晰的介紹數據結構相關知識(算法題都出自🙌B站馬士兵教育——左老師的課程,講的很好,對于想入門刷題的人很有幫助&#x1f4…

稅務專業人員能力構建與發展路徑指南

CDA數據分析師證書含金量高,適應了未來數字化經濟和AI發展趨勢,難度不高,行業認可度高,對于找工作很有幫助。一、稅務專業人員的核心能力框架能力維度關鍵技能要素專業工具與方法論實踐輸出成果稅務法規應用稅種政策解讀、法規更新…

Linux中rsync使用與inotify實時同步配置指南

Linux中rsync使用與inotify實時同步配置指南 一、rsync 簡介 rsync(Remote Sync)是 Linux 系統下的一款高效數據鏡像和備份工具,用于在本地或遠程同步文件和目錄。 支持本地復制、基于 SSH 的遠程同步,以及使用自有 rsync 協議的同…

Unicode 字符串轉 UTF-8 編碼算法剖析

📊 Unicode 字符串轉 UTF-8 編碼算法剖析 ——從 C# char 到 C wchar_t 的編碼轉換原理 引用:UTF-8 編解碼可視化分析 🔍 1. 算法功能概述 該函數將 Unicode 字符串(C# string)轉換為 UTF-8 編碼的字節數組&#xf…

php的安全性到底怎么樣

PHP作為一種流行的服務器端腳本語言,被廣泛應用于Web開發。然而,由于PHP是一種較為靈活的語言,其安全性議題一直備受爭議。在這篇文章中,我將從多個方面來討論PHP的安全性,包括常見的安全漏洞、防范措施以及最佳實踐。…

mapbox高階,結合threejs(threebox)添加建筑glb模型,添加陰影效果,設置陰影顏色和透明度

????? 主頁: gis分享者 ????? 感謝各位大佬 點贊?? 收藏? 留言?? 加關注?! ????? 收錄于專欄:mapbox 從入門到精通 文章目錄 一、??前言 1.1 ??mapboxgl.Map 地圖對象 1.2 ??mapboxgl.Map style屬性 1.3 ??threebox loadObj加載模型 二、??…

SSM從入門到實戰:1.6 Spring數據訪問與JDBC模板

👋 大家好,我是 阿問學長!專注于分享優質開源項目解析、畢業設計項目指導支持、幼小初高的教輔資料推薦等,歡迎關注交流!🚀 06-Spring數據訪問與JDBC模板 📖 本文概述 本文是SSM框架系列Spri…

下一代IT服務管理:ITIL5會是什么樣?

ITIL4發布到現在也就5年多時間,按照以往的更新節奏,ITIL5最早也得2027年之后。但現在IT發展的速度,跟以前完全不是一個量級。AI都快把我們的飯碗搶了(開個玩笑),ITIL要是還按部就班,估計真要被時…

最新研究進展:2023-2025年神經機器翻譯突破性成果

文章目錄 一、模型架構創新 1.1 混合架構的崛起 1.2 多模態翻譯的突破 1.3 大語言模型與NMT的深度融合(2023-2024) 1.4 非自回歸翻譯(NAT)的效率革命(2024) 二、數據與訓練策略優化 2.1 低資源語言翻譯的飛躍 2.2 動態數據增強技術 三、效率與部署 3.1 模型壓縮與加速 3.…

OpenTelemetry WebSocket 監控終極方案:打通最后一公里

概述 OpenTelemetry,以下簡稱 OTEL,是由 CNCF 托管的“一站式可觀測性標準”,把指標、鏈路、日志三大信號統一為單一 SDK/API,零侵入地采集從瀏覽器、移動端到后端、容器、云服務的全棧遙測數據,并支持 40 后端一鍵導…

VS Code 出現的 Web 視圖加載錯誤和服務工作者注冊失敗問題解決方案

針對 VS Code 或 Cursor (vscode系)中出現的 Web 視圖加載錯誤和服務工作者注冊失敗問題,以下是永久性解決方案的完整操作指南:解決方案步驟打開命令面板 使用快捷鍵 CtrlShiftP(Windows/Linux)或 CmdShift…