刷爆leetcode第十期

題目一 相同的樹

給你兩棵二叉樹的根節點 p 和 q ,編寫一個函數來檢驗這兩棵樹是否相同。

如果兩個樹在結構上相同,并且節點具有相同的值,則認為它們是相同的。

首先我們要來判斷下它們的根是否相等

根相等的話是否它們的左子樹相等

是否它們的右子樹相等

一直到子樹為空為止

大家仔細思考下這個思路對不對

接下來我們開始敲代碼

首先我們想極端一點的情況

如果這個倆空指針

說明這里肯定不用判斷了 返回ture就行

如果說有一個空指針 一個不為空指針的話 那么肯定是不相同的返回假就可以

接下來如果值相等 我們能判斷它們相同嘛 顯然不可以

所以說我們這里直接上兩個不同 返回假

之后我們再判斷它的左子樹右子樹

整體代碼如下

bool isSameTree(struct TreeNode* p, struct TreeNode* q) {if(p==NULL&&q==NULL){return true;}//一方為空if(p==NULL||q==NULL){return false;}//都不為空if(p->val!=q->val){return false;}return isSameTree(p->left,q->left)&&isSameTree(p->right,q->right);
}

測試一下?

可以運行

題目二 對稱二叉樹

這里和前面相同的數的思路差不多

都是判斷極值條件

我們可以借用一下前面的代碼稍微修改一下,將左右子樹比較

之后遞歸展開 這里直接上代碼 代碼中會寫明解題思路

 bool isSameTree(struct TreeNode* p, struct TreeNode* q) {if(p==NULL&&q==NULL){return true;}//一方為空if(p==NULL||q==NULL){return false;}//都不為空if(p->val!=q->val){return false;}return isSameTree(p->left,q->right)&&isSameTree(p->right,q->left);
}
bool isSymmetric(struct TreeNode* root) {if(root==NULL){return true;}return isSameTree(root->left,root->right);
}

這里我們要注意的是 要轉換成兩個子樹問題才可以做

而子樹問題需要再創建一個遞歸函數 可能是這一題的難點之一

還有一個難點就是要觀察結構、

題目三 另一個樹的子樹

給你兩棵二叉樹 root 和 subRoot 。檢驗 root 中是否包含和 subRoot 具有相同結構和節點值的子樹。如果存在,返回 true ;否則,返回 false 。

二叉樹 tree 的一棵子樹包括 tree 的某個節點和這個節點的所有后代節點。tree 也可以看做它自身的一棵子樹。

來源:力扣(LeetCode)
鏈接:https://leetcode.cn/problems/subtree-of-another-tree

我們這里只需要遍歷一遍root 并且將root中的每一個節點和subroot比較一次就可以

遍歷會吧

比較會吧

連起來

過啦!

代碼表示如下

bool isSameTree(struct TreeNode* p, struct TreeNode* q) {if (p == NULL && q == NULL){return true;}//一方為空if (p == NULL || q == NULL){return false;}//都不為空if (p->val != q->val){return false;}return isSameTree(p->left, q->left)&& isSameTree(p->right, q->right);
}
bool isSubtree(struct TreeNode* root, struct TreeNode* subRoot){if(root==NULL){return false;}if(isSameTree(root,subRoot)){return true;}return isSubtree(root->left,subRoot)||isSubtree(root->right,subRoot);
}

?以上便是本文所有內容,如有錯誤請各位大佬不吝賜教,感謝留言?

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

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

相關文章

在CMD中創建虛擬環境并在VSCode中使用和管理

1. 使用Conda創建虛擬環境 在CMD或Anaconda Prompt中執行以下代碼以創建一個新的虛擬環境: conda create -n my_env python 3.8 這樣會創建一個名為 my_env 的環境,并在Anaconda環境目錄下生成一個相應的文件夾,包含該虛擬環境所需的所有…

GD32實戰篇-雙向數控BUCK-BOOST-BOOST升壓理論基礎

本文章基于兆易創新GD32 MCU所提供的2.2.4版本庫函數開發 向上代碼兼容GD32F450ZGT6中使用 后續項目主要在下面該專欄中發布: https://blog.csdn.net/qq_62316532/category_12608431.html?spm1001.2014.3001.5482 感興趣的點個關注收藏一下吧! 電機驅動開發可以跳轉…

MySQL之備份與恢復(八)

備份與恢復 還原邏輯備份 如果還原的是邏輯備份而不是物理備份,則與使用操作系統簡單地復制文件到適當位置的方式不同,需要使用MySQL服務器本身來加載數據到表中。在加載導出文件之前,應該先花一點時間考慮文件有多大,需要多久加…

金蝶云蒼穹-插件開發(二)新建、更新、刪除數據

加載本頁面數據 關于加載數據,還要多補充一個點,如果要加載一個基礎資料/單據界面中正在操作的界面,比如要獲取剛填寫好的字段值,就要獲取當前界面的模型層,再獲取具體數據。具體操作如下: //獲取日任務信…

C++ 函數高級——函數的占位參數

C中函數的形參列表里可以有占位參數,用來做占位,調用函數時必須填補改位置 語法: 返回值類型 函數名(數據類型){ } 在現階段函數的占位參數存在意義不大,但是后面的課程中會用到該技術 示例:…

STM32快速復習(八)SPI通信

文章目錄 前言一、SPI是什么?SPI的硬件電路?SPI發送的時序?二、庫函數二、庫函數示例代碼總結 前言 SPI和IIC通信算是我在大學和面試中用的最多,問的最多的通信協議 IIC問到了,一般SPI也一定會問到。 SPI相對于IIC多了…

heml之樣式布局技巧博客

在編寫關于 HEML(HTML CSS JavaScript)的樣式布局技巧博客時,可以涵蓋很多不同的方面 1. 響應式設計 介紹媒體查詢(Media Queries)以及如何根據設備尺寸調整樣式。使用百分比寬度、視口單位(vw、vh&…

含并行連結的網絡

一、Inception塊 1、白色部分通過降低通道數來控制模型復雜度,藍色做特征提取工作,每條路上的通道數可能不同,大概我們會把更重要的那部分特征分配更多的通道數 2、Inception只改變高寬,不改變通道數 3、在不同的情況下需要選擇…

pin是什么?管腳

1.平面分割 1)啟動Allegro PCB design ,打開.brd。深色部分屬于一個net,要做一下修改,將上面的pin包含進shape中,i進行a,b兩步操作,刪除以前存在的Anti Etch下的line,再將其進行補齊 使它保住上…

【幀中繼實驗-ensp】

實驗要求 在R1上開啟一個點對點子接口,用于連接 R1–R2,兩端IP地址為12.1.1.x 。開啟一個多點子接口 ,用于連接R1–R3,R4,兩段IP地址為134.1.1.x。 具體DLCI分配和映射關系如下: R1 102 R2 201—動態映射…

python獲取海康威視所有攝像頭的OSD通道名稱

讀取IP地址的txt文檔 根據IP地址獲取監控攝像頭的OSD通道名稱 # codingutf-8 import os import time import requests from requests.auth import HTTPBasicAuth, HTTPDigestAuth import xml.etree.ElementTree as ET #注意:和ip.txt放在一個文件夾,會生…

論文略讀:Can Long-Context Language Models Subsume Retrieval, RAG, SQL, and More?

202406 arxiv 1 intro 傳統上,復雜的AI任務需要多個專門系統協作完成。 這類系統通常需要獨立的模塊來進行信息檢索、問答和數據庫查詢等任務大模型時代,尤其是上下文語言模型(LCLM)時代,上述問題可以“一體化”完成…

【程序大俠傳】大表分庫分表切換數據庫類型導致pagehelper生成sql語法報錯

前序 代碼劍宗等級分明,其門下弟子等級劃分如下: 入門弟子 剛剛拜入代碼劍宗,學習基礎編程語言和基本劍法(語法和基礎概念)。他們的代碼還顯得生澀,但已經開始展現出對優雅代碼的追求。 江湖小蝦 初步掌握…

《python程序語言設計》2018版第5章第53題利用turtle繪制sin和cos函數 sin藍色,cos紅色和52題類似

直接上題和代碼 5.53 (Turtle:繪制sin和cos函數)編寫程序繪制藍色的sin函數和紅色的cos函數。 代碼和結果 turtle.speed(10) turtle.penup() # sin 用藍色 turtle.color("blue") #這道題和上道題一樣,先把turtle放到起始…

架構面試-數據庫優化問題

文章目錄 如何定位慢查詢1. 開啟慢查詢日志MySQL示例:PostgreSQL示例: 2. 分析慢查詢日志MySQL:PostgreSQL: 3. 使用數據庫性能工具MySQL:PostgreSQL: 4. 優化慢查詢5. 監控與持續優化 sql語句執行的很慢&a…

從0到1制作單只鰲蝦運動軌跡追蹤軟件

前言 需要準備windows10操作系統,python3.11.9,cuDNN8.9.2.26,CUDA11.8,paddleDetection2.7 流程: 準備數據集-澳洲鰲蝦VOC數據集 基于RT-DETR目標檢測模型訓練導出onnx模型進行python部署平滑濾波處理視頻幀保留的…

簡介時間復雜度

好了,今天我們來了解一下,我們在做練習題中常出現的一個名詞。時間復雜度。我相信大家如果有在練習過題目的話。對這個名詞應該都不陌生吧。但是可能很少的去思考它是干什么的代表的什么意思。反正我以前練習的時候就是這樣。我只知道有這么一個名詞在題…

【全面講解下iPhone新機官網驗機流程】

🎥博主:程序員不想YY啊 💫CSDN優質創作者,CSDN實力新星,CSDN博客專家 🤗點贊🎈收藏?再看💫養成習慣 ?希望本文對您有所裨益,如有不足之處,歡迎在評論區提出…

MybatisPlus實現插入/修改數據自動設置時間

引言 插入數據時自動設置當前時間,更新數據時自動修改日期為修改時的日期。 使用MybatisPlus的擴展接口MetaObjectHandler 步驟 實現接口 實體類加注解 實現接口 package com.example.vueelementson.common;import com.baomidou.mybatisplus.core.handlers.M…

C++ 模版進階

目錄 前言 1. 非類型模版參數 1.1 概念與講解 1.2 array容器 2. 模版的特化 2.1 概念 2.2 函數模版特化 2.3 類模版特化 2.3.1 全特化 2.3.2 偏特化 3.模版的編譯分離 3.1 什么是分離編譯 3.2 模版的分離編譯 3.3 解決方法 4. 模版總結 總結 前言 本篇文章主要…