【算法 day12】LeetCode 226.翻轉二叉樹 |101. 對稱二叉樹 |104.二叉樹的最大深度|111.二叉樹的最小深度

?226.翻轉二叉樹 (前序,后序)

題目鏈接 | 文檔講解 |視頻講解 :?鏈接

?1.思路:
  • ? ?翻轉的是指針,不是數值

  • ? 前序遍歷和后序遍歷都可以

  • ? 中序不行,中序遍歷的順序是左中右,反轉左指針后,到根節點,在反轉右節點(此時的右節點就是原先的左節點),真正的右節點沒有被處理

2.舉例:

步驟當前節點操作
14進入函數,調用?invertTree(2)
22調用?invertTree(1)
31左右為空,直接交換(沒變化)
42回到?2,調用?invertTree(3)
53左右為空,交換(沒變化)
62交換自己的左右子節點(2 的左右變成 3 和 1)
74回到?4,調用?invertTree(5)
85左右為空,交換(沒變化)
94最后交換自己的左右子節點(4 的左右變成 5 和 2)
?2.代碼:
    public TreeNode invertTree(TreeNode root) {//遞歸終止條件if(root==null){return null;}//遞歸的邏輯//左invertTree(root.left);//右invertTree(root.right);//中 最后交換當前節點的左右子節點TreeNode temp=root.left;root.left=root.right;root.right=temp;return root;}

101. 對稱二叉樹(后序)

題目鏈接 | 文檔講解 |視頻講解:鏈接

?
1.思路:

1.二叉樹是否是對稱二叉樹,要比較的是左右子樹是不是可以相互翻轉,比較的是2棵樹,所說遞歸遍歷要同時遍歷兩顆樹
2.判斷的情況分為下面幾種:
? ? ?如果左子樹為空,右子樹不為空? 返回false
? ? ?如果右子樹為空,左子樹不為空? 返回false
? ? ?如果左子樹為空,右子樹為空??? 返回true
? ? ?如果左子樹不為空,右子樹不為空,但是左右子樹值不相等,返回false
3.如何比較元素是否相等
? ? 左子樹的左節點和右子樹的右節點進行比較
? ? 左子樹的右節點和右子樹的左節點進行比較
4.因為要遍歷左右節點,遍歷順序是左右中,所以本題只能是后序遍歷

?2.代碼:
public boolean isSymmetric(TreeNode root){return isSame(root.left,root.right);}public boolean isSame(TreeNode left,TreeNode right){//左節點為空 右節點不為空if(left==null && right!=null){return  false;}//左節點不為空 右節點為空if(left!=null &&right==null){return  false;}//左右節點均為空if(left==null &&left==null){return  true;}//左右節點不為空 但值不相等if(left.val != right.val ){return false;}//比較外側boolean leftResult = isSame(left.left, right.right);//比較內側boolean rightResult = isSame(left.right, right.left);//中return leftResult && rightResult;}

104.二叉樹的最大深度(前序,后序)

題目鏈接 | 文檔講解 |視頻講解:鏈接

二叉樹的深度前序遍歷 根節點到該節點的最長簡單路徑邊的條數或者節點數(從上到下 eg:井高度) 從1開始

二叉樹的高度后序遍歷 指從該節點到葉子節點的最長簡單路徑邊的條數或者節點數(從下到上? eg:樓高度)從1開始

?1.思路:

? ? ? ?二叉樹的最大深度=二叉樹的最大高度,所以可以采取后序遍歷

? ? ? 遞歸計算的是當前節點左子樹和右子樹的高度,所以需要將當前節點加上,最后的值+

?2.代碼:
    public int maxDepth(TreeNode root){//遞歸終止條件if(root==null){return 0;}//遞歸邏輯//左子樹最大深度int leftHeight=maxDepth(root.left);//右子樹最大深度int rightHeight=maxDepth(root.right);//返回左右子樹最大深度+1(當前節點深度)return Math.max(leftHeight,rightHeight)+1;}

111.二叉樹的最小深度 (前序,后序)

題目鏈接 | 文檔講解 |視頻講解:鏈接

?1.思路:
  • 題目上求的是最小深度,指的是從根節點到最近葉子結點的距離

  • 本題代碼使用的是后序遍歷(前序遍歷也可以),其實求的是根節點到葉子節點的最小距離,就是求高度的過程,不過這個最小距離 也同樣是最小深度

  • 因為求的是最小,而且求的是根節點到葉子節點的最小深度,所以需要排除左子樹或葉子樹為空的情況

?2.代碼:
public int  minDepth(TreeNode root){//遞歸終止條件if(root==null){return 0;}//遞歸邏輯 (后續遍歷)int leftHeight =minDepth(root.left);int rightHeight =minDepth(root.right);//遞歸邏輯//左子樹為空,右子樹不為空if(root.left==null && root.right!=null){return rightHeight+1;}//右子樹為空,左子樹不為空if(root.left!=null && root.right==null){return leftHeight+1;}//左右子樹都不為空int result=Math.min(leftHeight,rightHeight)+1;return result;}

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

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

相關文章

Spring Boot 整合 Swagger3 如何生成接口文檔?

前后端分離的項目,接口文檔的存在十分重要。與手動編寫接口文檔不同,swagger是一個自動生成接口文檔的工具,在需求不斷變更的環境下,手動編寫文檔的效率實在太低。與新版的swagger3相比swagger2配置更少,使用更加方便。…

Rust 的智能指針

在 Rust 中,智能指針是一種特殊的數據結構,它不僅存儲數據的地址,還提供了額外的功能,如自動內存管理、引用計數等。智能指針在 Rust 中非常重要,因為它們幫助開發者管理內存,同時保持代碼的安全性和效率。…

Redis RDB 持久化:原理、觸發方式與優缺點全解析

引言 作為 Redis 最經典的持久化機制之一,RDB(Redis DataBase)憑借高效的快照生成能力和快速的恢復速度,一直是開發者的心頭好。但很多人對它的底層原理、觸發時機和適用場景仍存在疑惑。今天咱們就對RDB進行全解析,幫…

設計模式精講 Day 12:代理模式(Proxy Pattern)

【設計模式精講 Day 12】代理模式(Proxy Pattern) 文章內容 在軟件開發中,代理模式是一種常見的結構型設計模式,它通過引入一個代理對象來控制對真實對象的訪問。這種模式不僅能夠增強系統的安全性、靈活性和可擴展性&#xff0c…

企業級知識庫私有化部署:騰訊混元+云容器服務TKE實戰

1. 背景需求分析 在金融、醫療等數據敏感行業,企業需要構建完全自主可控的知識庫系統。本文以某證券機構智能投研系統為原型,演示如何基于騰訊混元大模型與TKE容器服務實現: 千億級參數模型的私有化部署金融領域垂直場景微調高并發低延遲推…

Qt事件系統詳解

一、Qt事件系統概述 Qt事件系統是Qt框架中處理用戶輸入、窗口交互、定時器、異步操作等機制的核心。所有事件均繼承自QEvent類,并通過事件循環(Event Loop)分發到目標對象。 事件系統基本概念 事件(Event):描述應用程序內部或外…

CPU性能篇-系統中出現大量不可中斷進程和僵尸進程怎么辦? Day 05

在上下文切換的文章中,學習并分析了系統 CPU 使用率高的問題,剩下的等待 I/O 的 CPU 使用率(以下簡稱為 iowait)升高,也是最常見的一個服務器性能問題。今天就來看一個多進程 I/O 的案例,并分析這種情況。 …

ASP.NET Core + Jenkins 實現自動化發布

一、安裝Jenkins 我這邊服務器是Linux CentOS 7 ,使用SSH 登錄云服務器后,輸入以下命令安裝jenkins. sudo wget -O /etc/yum.repos.d/jenkins.repo \https://pkg.jenkins.io/redhat-stable/jenkins.repo sudo rpm --import https://pkg.jenkins.io/red…

Java項目RestfulAPI設計最佳實踐

大家好,我是鋒哥。今天分享關于【Java項目RestfulAPI設計最佳實踐】面試題。希望對大家有幫助; Java項目RestfulAPI設計最佳實踐 超硬核AI學習資料,現在永久免費了! 設計一個高效、易維護的 Java 項目中的 RESTful API 涉及到一…

FANUC機器人教程:用戶坐標系標定及其使用方法

目錄 概述 工作站創建 任務描述 用戶坐標系標定方法 用戶坐標系標定操作 用戶坐標系手動測試 用戶坐標系在程序中的應用 用戶坐標系選擇指令介紹 機器人示教編程 仿真運行 仿真案例資源下載 概述 FANUC機器人的用戶坐標系,是用戶對每個作業空間定義的直…

動態庫與靜態庫【Linux】

程序編譯過程 源代碼(.cpp) → 預處理(.i) → 編譯(.s) → 匯編(.o) → 鏈接(可執行文件) g -o main.i -E main.cpp 參數說明: 參數功能輸出文件類型-E僅預處理.i-S預處理 編譯.s-c預處理 編譯 匯編.o無完整流程(預處理→編譯→匯編→鏈接&…

MySQL MHA 故障轉移-VIP

MHA故障轉移-VIP #手工在主庫添加VIP ifconfig ens33:1 192.168.80.200/24配置VIP腳本 vim /usr/local/bin/master_ip_failoverchmod x /usr/local/bin/#!/usr/bin/env perl use strict; use warnings FATAL > all;use Getopt::Long;my ( $command, $ssh_user, $orig_mast…

Elasticsearch索引字段的類型

在 Elasticsearch 中,索引字段的類型(即 Mapping 中的字段類型)對搜索和存儲性能影響很大。下面是各種常用數據類型的用途及推薦使用場景總結: 1. keyword 類型(精確匹配) 適合數據: 不需要分詞…

kubernetes證書續簽-使用kubeadm更新證書(下)

#作者:任少近 文章目錄 查看kubelet證書查看kubelet當前所使用的證書 更換 node上的kubelet證書生成node1所需要的kubelet.conf文件生成node2所需要的kubelet.conf文件查看csr 更新 ~/.kube/config 文件重啟相關組件 查看kubelet證書 以上少了kubelet的證書&#…

AI智能體長期記憶系統架構設計:從認知模型到生產實踐

1 長期記憶:AI智能體的認知基石 1.1 人類記憶與AI記憶的類比 #mermaid-svg-VIPKAFe7VgN4UHFA {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-VIPKAFe7VgN4UHFA .error-icon{fill:#552222;}#mermaid-svg-VIPKAFe7V…

快速上手:利用音頻大模型與Java提取視頻文案

文章目錄 1、前言2、需求說明2.1 需求說明2.2 數據準備 3、功能實現3.1 使用視頻理解大模型能力3.1.1 三方平臺視頻在線鏈接解析3.1.2 三方平臺視頻內網鏈接解析3.1.3 三方平臺視頻轉存本地服務 3.2 使用音頻識別大模型能力3.2.1 三方平臺視頻在線鏈接解析3.2.2 三方平臺視頻詳…

LLM復雜記憶存儲-多會話隔離案例實戰

導讀:在多用戶并發的對話系統中,會話隔離問題往往成為開發者面臨的技術難題。當數千個用戶同時與AI助手交互時,如何確保每個用戶的對話歷史完全獨立,避免數據混淆和隱私泄露? 本文深入剖析了基于RunnableWithMessageHi…

【PX4-AutoPilot教程-TIPS】PX4系統命令行控制臺ConsolesShells常用命令(持續更新)

PX4系統命令行控制臺 Consoles & Shells 常用命令 查看每個應用程序的堆棧使用情況獲取所有可用命令和APP的列表應用程序啟動、停止和狀態查詢查看本地文件系統查看剩余的可用RAM查看工作隊列中正在運行的內容以及運行速率查看特定的uORB話題調試uORB話題進行模式切換和故障…

國內優秀wordpress主題推薦

在國內,WordPress 主題市場雖然不如國外那樣龐大,但依然有許多優秀且適合中國用戶需求的主題。以下是一些經過評估和推薦的國內優秀WordPress主題,涵蓋不同類型的網站需求,如博客、企業官網、資源站、社區論壇等。 WP漢主題 WP漢…

第 6 章:進階話題

第 6 章:進階話題 過擬合vs欠擬合:模型復雜度和泛化能力的關系 在前面的章節中,我們已經學習了神經網絡的基礎知識、常見架構和基本訓練流程。然而,在實際的深度學習項目中,僅僅掌握這些基礎知識是不夠的。我們還需要…