鏈式二叉樹oj題

1.輸入k ,找第k層節點個數

int TreeKlevel(BTNode*root,int k) {if (root == NULL) {return 0;}if (k == 1) {return 1;}return TreeKlevel(root->left, k - 1)+TreeKlevel(root->right, k - 1);
}

在這里我們要確定遞歸子問題,第一個就是NULL時返回,還有一個就是k=1時就是我們要找的層數。

2.輸入一個數,查找該數,找到了返回其地址。

BTNode* TreeFind(BTNode* root, int x) {if (root == NULL) {return NULL;}if (root->val == x) {return root;}BTNode* ret1 = TreeFind(root->left, x);if (ret1)return ret1;BTNode* ret2 = TreeFind(root->right, x);if (ret2)return ret2;return NULL;
}

在這里我們需要弄明白的是,在某個開辟的棧幀中找到了該數據,直接返回其指針,是得不到它的地址的。

3.判斷兩棵樹是相同的

bool isSametree(BTNode* root1, BTNode* root2) {//都為空if (root1 == NULL && root2 == NULL) {return true;}//其中一個為空if (root1 == NULL || root2 == NULL) {return false;}if (root1->val != root2->val) {//判斷值是否相同return false;}return isSametree(root1->left, root2->left) &&isSametree(root1->right, root2->right);
}

4.判斷是否為鏡像/對稱二叉樹,也就是左右子樹是否相同

bool _isSymmetric(BTNode* root1, BTNode* root2) {//根比較//左子樹和右子樹比較//右子樹和左子樹比較//都為空if (root1 == NULL && root2 == NULL) {return true;}//一個為空一個不為空if (root1 == NULL || root2 == NULL) {//短路求值return false;}if (root1->val != root2->val) {return false;}return _isSymmetric(root1->left, root2->right) &&_isSymmetric(root1->right, root2->left);
}
bool isSymmetri(BTNode* root) {return _isSymmetric(root->left, root->right);//將根的兩個子樹傳遞給子函數
}

5.在一棵樹上找另一棵樹

bool issubTree(BTNode* root, BTNode* subroot) {if (root == NULL)return false;if (root->val == subroot->val&& isSametree(root, subroot)) {//當遍歷時發現根相同時才開始遍歷比較//為了防止不止一處地方根相同且有一處根相同的地方并不完全相等,所以我們需要這兩個條件同時成立才返回true.return true;}//遍歷return issubTree(root->left,subroot) || issubTree(root->right,subroot);
}

這里與其他函數結合可以更好地解決問題。

謝謝

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

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

相關文章

26_嵌入式系統網絡接口

以太網接口基本原理 IEEE802標準 局域網標準協議工作在物理層和數據鏈路層,其將數據鏈路層又劃分為兩層,從下到上分別為介質訪問控制子層(不同的MAC子層,與具體接入的傳輸介質相關),邏輯鏈路控制子層(統一的LLC子層,為上層提供統…

非同步升壓轉換器,效率95%你信嗎?ETA1611輸出電流2A, 22V DCDC

前言: 截止24年7月7日某創報價:500: ¥0.7856 / 個 建議使用前同時了解下方器件。 2毛錢的SOT23-5封裝28V、1.5A、1.2MHz DCDC轉換器用于LCD偏置電源和白光LED驅動等MT3540升壓芯片 描述 ETA1611 SOT23-6封裝 絲印GVYW&#xff0…

c進階篇(三):字符串函數

1.strlen: strlen - C Reference strlen 函數是一個標準庫函數&#xff0c;用于計算以 null 結尾的字符串的長度&#xff0c;也就是字符串中實際字符的數量&#xff0c;不包括最后的 null 終止符 \0。它定義在 <string.h> 頭文件中。 函數原型:size_t strlen(const ch…

一篇就夠了,為你答疑解惑:鋰電池一階模型-在線參數辨識(附代碼)

鋰電池一階模型-在線參數辨識 背景在線 VS 離線 參數辨識遞推最小二乘法一階戴維南Z域離散表達式 背景 鋰電池一階戴維南等效模型的基礎知識和離線辨識方法&#xff0c;已經在上一期非常詳細地講解了一輪&#xff08;上期文章請戳此處&#xff09;&#xff0c;本期繼續講解一下…

【數據結構】經典鏈表題目詳解集合(反轉鏈表、相交鏈表、鏈表的中間節點、回文鏈表)

文章目錄 一、反轉鏈表1、程序詳解2、代碼 二、相交鏈表1、程序詳解2、代碼 三、鏈表的中間節點1、程序詳解2、代碼 四、回文鏈表1、程序詳解2、代碼 一、反轉鏈表 1、程序詳解 題目&#xff1a;給定單鏈表的頭節點 head &#xff0c;請反轉鏈表&#xff0c;并返回反轉后的鏈…

理解注意力機制與多頭注意力:深度學習中的“聚焦術”

Attention 理解注意力機制與多頭注意力&#xff1a;深度學習中的“聚焦術”什么是注意力機制&#xff1f;**核心思想** 什么是多頭注意力機制&#xff1f;**工作原理** **多頭注意力的優勢****應用領域****結論** 理解注意力機制與多頭注意力&#xff1a;深度學習中的“聚焦術”…

MLIR

方言 簡介操作塊區域值范圍Control Flow and SSACFG Regions 操作與多區域&#xff08;Operations with Multiple Regions&#xff09;閉包&#xff08;Closure&#xff09;圖形區域&#xff08;Graph Regions&#xff09;參數和結果&#xff08;Arguments and Results&#xf…

vscode編輯keil工程

1.編碼問題 通常keil默認amsi格式&#xff0c;vscode默認utf-8格式&#xff0c;直接打開會出現亂碼問題。 解決過程&#xff1a; 1.想著創建keil階段&#xff0c;就使用utf-編碼格式。 在區域設置里面“選擇beta版&#xff0c;提供全球utf-8 提供全球語言支持”&#xff0c…

JVM專題之內存模型以及如何判定對象已死問題

體驗與驗證 2.4.5.1 使用visualvm **visualgc插件下載鏈接 :https://visualvm.github.io/pluginscenters.html https://visualvm.github.io/pluginscenters.html **選擇對應JDK版本鏈接--->Tools--->Visual GC** 2.4.5.2 堆內存溢出 * **代碼** java @RestCont…

從0制作自己的ros導航小車(01、準備工作)

@TOC 前言 本篇說明需要具備的知識和軟硬件。可以不用全部具備,但基礎要有,寫的不是非常詳細。 本小車分為上位機與下位機兩部分,上位機使用旭日x3派運行ros進行開發和算法實現,下位機使用stm32驅動底盤和傳感器數據采集。 一、知識 ①stm32部分(當然也可以使用其它控制…

uniapp/Android App上架三星市場需要下載所需要的SDK

只需添加以下一個權限在AndroidManifest.xml <uses-permission android:name"com.samsung.android.providers.context.permission.WRITE_USE_APP_FEATURE_SURVEY"/>uniapp開發的&#xff0c;需要在App權限配置中加入以上的額外權限&#xff1a;

1958.力扣每日一題7/7 Java(100%解)

博客主頁&#xff1a;音符猶如代碼系列專欄&#xff1a;算法練習關注博主&#xff0c;后期持續更新系列文章如果有錯誤感謝請大家批評指出&#xff0c;及時修改感謝大家點贊&#x1f44d;收藏?評論? 目錄 思路 解題方法 時間復雜度 空間復雜度 Code 思路 首先將指定位…

游戲開發面試題5

什么是進程、線程、協程 進程 進程是計算機的一種基本運行單位&#xff0c;由操作系統管理資源和分配資源的基本單位&#xff0c;進程可以理解為一個正在運行的程序 線程 線程是計算機的一種獨立執行單元&#xff0c;是操作系統能夠進行運算調度的基本單位&#xff0c;線程之間…

排序 -- 手撕歸并排序(遞歸和非遞歸寫法)

一、基本思想 歸并排序&#xff08;MERGE-SORT&#xff09;是建立在歸并操作上的一種有效的排序算法,該算法是采用分治法&#xff08;Divide and Conquer&#xff09;的一個非常典型的應用。將已有序的子序列合并&#xff0c;得到完全有序的序列&#xff1b;即先使每個子序列有…

漢諾塔與青蛙跳臺階

1.漢諾塔 根據漢諾塔 - 維基百科 介紹 1.1 背景 最早發明這個問題的人是法國數學家愛德華盧卡斯。 傳說越南河內某間寺院有三根銀棒&#xff0c;上串 64 個金盤。寺院里的僧侶依照一個古老的預言&#xff0c;以上述規則移動這些盤子&#xff1b;預言說當這些盤子移動完畢&am…

SpringMVC(2)——controller方法參數與html表單對應

controller方法參數與html表單對應 0. User實體類 import org.springframework.format.annotation.DateTimeFormat;import java.io.Serializable; import java.util.Date; import java.util.List; import java.util.Map;public class User implements Serializable {private …

ES7210高性能四通道音頻ADC轉換模擬麥克風為IIS數字咪頭

特征 高性能多位 Delta-Σ 音頻 ADC 102 dB 信噪比 -85 分貝 THDN 24 位&#xff0c;8 至 100 kHz 采樣頻率 I2S/PCM 主串行數據端口或從串行數據端口 支持TDM 256/384Fs、USB 12/24 MHz 和其他非標準音頻系統時鐘 低功耗待機模式 應用 麥克風陣列 智能音箱 遠場語音捕獲 訂購…

微服務的分布式事務解決方案

微服務的分布式事務解決方案 1、分布式事務的理論模型1.1、X/Open 分布式事務模型1.2、兩階段提交協議1.3、三階段提交協議 2、分布式事務常見解決方案2.1、TCC補償型方案2.2、基于可靠性消息的最終一致性方案2.3、最大努力通知型方案 3、分布式事務中間件 Seata3.1、AT 模式3.…

人工智能在軟件開發中的角色:助手還是取代者?

人工智能在軟件開發中的角色&#xff1a;助手還是取代者&#xff1f; 隨著科技的飛速發展&#xff0c;生成式人工智能&#xff08;AIGC&#xff09;在軟件開發領域的應用越來越廣泛。從代碼生成、錯誤檢測到自動化測試&#xff0c;AI工具正成為開發者的重要助手。然而&#xf…

Postgresql - 用戶權限數據庫

1、綜述 在實際的軟件項目開發過程中&#xff0c;用戶權限控制可以說是所有運營系統中必不可少的一個重點功能&#xff0c;根據業務的復雜度&#xff0c;設計的時候可深可淺&#xff0c;但無論怎么變化&#xff0c;設計的思路基本都是圍繞著用戶、部門、角色、菜單這幾個部分展…