力扣刷題第二十九天--二叉樹

前言

問問自己,刷題的效果真的達到了嗎?

內容

一、翻轉二叉樹

226.翻轉二叉樹

給你一棵二叉樹的根節點?root?,翻轉這棵二叉樹,并返回其根節點。

遞歸
func invertTree(root *TreeNode) *TreeNode {if root==nil{return root}root.Left,root.Right=root.Right,root.LeftinvertTree(root.Left)invertTree(root.Right)return root
}
二、對稱二叉樹

101.對稱二叉樹

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

遞歸

我們可以實現這樣一個遞歸函數,通過「同步移動」兩個指針的方法來遍歷這棵樹,p 指針和 q 指針一開始都指向這棵樹的根,隨后 p 右移時,q 左移,p 左移時,q 右移。每次檢查當前 p 和 q 節點的值是否相等,如果相等再判斷左右子樹是否對稱。

func isSymmetric(root *TreeNode) bool {return  dfs(root.Left,root.Right)}func dfs(left *TreeNode,right *TreeNode) bool{if left==nil&&right==nil{return true}if left==nil||right==nil{return false}if left.Val!=right.Val{return false}return dfs(left.Left,right.Right)&&dfs(left.Right,right.Left)
}
迭代?

把遞歸程序改寫成迭代程序

func isSymmetric(root *TreeNode)bool{u,v:=root,rootqueue:=[]*TreeNode{}queue=append(queue,u)queue=append(queue,v)for len(queue)>0{u,v = queue[0],queue[1]queue=queue[2:]if u==nil&&v==nil{//要先判斷continue}if u==nil||v==nil{return false}if u.Val!=v.Val{return false}queue=append(queue,u.Left)queue=append(queue,v.Right)queue=append(queue,u.Right)queue=append(queue,v.Left)}return true
}
三、完全二叉樹的節點個數

222.完全二叉樹的節點個數

給你一棵?完全二叉樹?的根節點?root?,求出該樹的節點個數。

完全二叉樹?的定義如下:在完全二叉樹中,除了最底層節點可能沒填滿外,其余每層節點數都達到最大值,并且最下面一層的節點都集中在該層最左邊的若干位置。若最底層為第?h?層,則該層包含?1~?2h?個節點。

廣度優先搜素
func countNodes(root *TreeNode) int {var count intif root==nil{//沒有這個會報錯 昨天遇到過return 0}level:=[]*TreeNode{root}for len(level)>0{temp:=levellevel=nilfor _,node:=range temp{count++if node.Left!=nil{level=append(level,node.Left)}if node.Right!=nil{level=append(level,node.Right)}}}return count
}

最后

令人心動的offer啊,能拿到嗎?

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

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

相關文章

Vue中的$nextTick的作用

在 Vue 中,當某些數據發生變化時,DOM 并不會立即更新。相反,Vue 會在下一個事件循環周期(microtask)中異步執行更新,這樣可以避免頻繁的 DOM 操作。然而,有時候我們需要在 DOM 更新后執行一些操…

2024-NeuDS-數據庫題目集

一.判斷題 1.在數據庫中產生數據不一致的根本原因是冗余。T 解析:數據冗余是數據庫中產生數據不一致的根本原因,因為當同一數據存儲在多個位置時,如果其中一個位置的數據被修改,其他位置的數據就不一致了。因此,在數據…

11.docker的網絡-docker0的理解及bridge網橋模式的介紹與實例

1.docker0的基本理解 安裝完docker服務后,我們首先查看一下宿主機的網絡配置 ifconfig我們可以看到,docker服務會默認在宿主機上創建一個虛擬網橋docker0,該網橋網絡的名字稱為docker0。它在內核層連通了其他物理或者虛擬網卡,這…

ubuntu22.04系統下載程序和依賴,并拷貝到指定路徑下

腳本1 apt install aptitude apt-get -d install xxx #xxx是待下載的安裝包 mv /var/cache/apt/archives/* /home/tuners/1apt install aptitude apt-get -d install xxx mv /var/cache/apt/archives/*.deb /home/tuners/1 xxx 為程序包名稱 /home/tuners/1為保存程序包的…

從零開始的搭建指南:開發高效的抖音預約服務小程序

預約服務小程序提高了效率,節省了用戶時間。下文,小編將與大家一同探討如何從零開始打造預約服務小程序。 第一步:明確需求和目標 確定你的小程序主要服務領域是什么?是醫療預約、美容美發、餐廳預訂還是其他行業?明…

Python 如何開發出RESTful Web接口,DRF框架助力靈活實現!

Django Rest Framework(DRF)是構建強大且靈活的Web API的優秀工具。它基于Django,提供了一套用于構建Web API的組件和工具,簡化了API開發過程,同時保留了Django的優雅和強大。 一、Web應用模式 在開發Web應用時&…

Android組件化搭建學習

什么是組件化? 為什么要用組件化?在項目的開發過程中,隨著開發人員的增多及功能的增加,如果提前沒有使用合理的開發架構,那么代碼會越來臃腫,功能間代碼耦合也會越來越嚴重,這時候為了保證項目…

C# 忽略大小寫

在 C# 中,你可以通過以下幾種方式來忽略大小寫: 使用 ToLower 或 ToUpper 方法將字符串轉換為全小寫或全大寫,然后進行比較。使用 Compare 或 CompareOrdinal 方法,并傳入正確的 StringComparer 實例以指示比較應該忽略大小寫。使…

Android 開發Java調用Kotlin提示包不存在

在kotlin代碼所在module的build.gradle設置 plugins {id org.jetbrains.kotlin.android }

Unity中Shader的Standard材質解析(一)

文章目錄 前言一、在Unity中,按一下步驟準備1、在資源管理面板創建一個 Standard Surface Shader2、因為Standard Surface Shader有很多缺點,所以我們把他轉化為頂點片元著色器3、整理只保留主平行光的Shader效果4、精簡后的最終代碼 前言 在Unity中&am…

基于Springboot+Vue選課系統

選課系統要求 (1)數據庫表:教師信息表、學生信息表、課程表、選課表 其中,教師信息表、學生信息表和選課表的數據需要提前設置,本題主要操作課程表 (2) 技術架構: 后臺使用springboot 前端使用vue-admin-template (3) 考試時間&…

鴻蒙(HarmonyOS)應用開發——安裝DevEco Studio安裝

前言 HarmonyOS華為開發的操作系統,旨在為多種設備提供統一的體驗。它采用了分布式架構,可以在多個設備上同時運行,提供更加流暢的連接和互動。HarmonyOS的目標是提供更高的安全性、更高效、響應更快的用戶體驗,并通過跨設備功能…

Vue3 響應式數據 reactive使用

ref 與 reactive 是 vue3 提供給我們用于創建響應式數據的兩個方法。 reactive 常用于創建引用數據,例如:object、array 等。 reactive 則是通過 proxy 來實現的響應式數據,并配合 reflect 操作的源對象。 reactive 創建引用數據&#xff1…

【實戰精選】掌握圖像風格遷移:構建基于生成對抗網絡的系統

1.研究背景與意義 隨著計算機技術的不斷發展,圖像處理和計算機視覺領域取得了長足的進步。圖像風格遷移是其中一個備受關注的研究方向,它可以將一幅圖像的風格特征應用到另一幅圖像上,從而創造出新的圖像。這項技術具有廣泛的應用前景&#…

lazada商品詳情數據接口(lazada.item_get)

Lazada商品詳情數據接口是Lazada電商平臺提供的一個API接口,用于獲取商品詳細信息。通過這個接口,開發者可以獲取Lazada平臺上商品的豐富信息,包括商品名稱、價格、庫存、描述、圖片等。這個接口使用RESTful風格,并通過HTTP協議進…

經過了多少輪洗牌后,序列中間位置的牌面為9 ← random.shuffle()

【題目描述】 有牌面為1~9的撲克牌,現在進行洗牌,并存于一個序列中。 請輸出經過了多少輪洗牌后,序列中間位置的牌面為9。【算法分析】 Python 中使用 random 模塊中的 shuffle 函數,可隨意排列列表中的元素。 本題中的輸出&#…

【基礎知識】AB軟件RSLinx的版本說明

哈嘍,大家好,我是雷工! 之前對AB的軟件了解比較少,在工作中未接觸過,最近一次現場勘察時,有很多中控系統都是AB的,借此機會對AB軟件有了些許了解。 一、RSLinx是什么軟件? RSLinx是…

fork介紹,返回值問題,寫時拷貝,進程切換,子進程開始執行的位置,子進程的用途

目錄 fork 介紹 fork的返回值問題 介紹 fork()時,系統要做什么 數據是否要獨立 如果共享的話,就會出現問題! 寫時拷貝 引入 介紹 舉例(fork返回值) fork返回的值是什么 創建失敗的原因 子進程執行位置從哪里開始 引入 進程切換 子進程執行的位置 子進程的…

燙傷事件屢有發生,覓光推脫責任,稱是用戶操作失誤

提及“雙十一”“直播間”等關鍵詞,人們常常將其與“低價”“薅羊毛”等字眼掛鉤。而在近日,科技美容品牌AMIRO覓光(下稱“覓光”)卻上演了一出“反向薅羊毛”的戲碼,因線上線下渠道相差超千元的價格差飽受爭議。 自橫…

camera-caps:Jetson設備上的一種實用的V4L2可視化界面

camera-caps:Jetson設備上的一種實用的V4L2可視化界面 github地址是: https://github.com/jetsonhacks/camera-caps 注意:Jetpack5.x需要選擇tag 5.x版本