亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

C語言詳解判斷相同樹案例分析

 更新時間:2022年04月24日 09:10:15   作者:CodeWinter  
這篇文章主要介紹了用C語言檢查兩棵樹是否相同,本篇文章通過簡要的案例,講解了該項技術(shù)的了解與使用,以下就是詳細內(nèi)容,需要的朋友可以參考下

題目難度:簡單

一、題目描述

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

如果兩個樹在結(jié)構(gòu)上相同,并且節(jié)點具有相同的值,則認為它們是相同的。

LeetCode鏈接:相同的樹

二、解題思路

核心思路:

先比較兩顆二叉樹的根節(jié)點

  • 如果「都為空」,則返回 true,說明兩樹相同。
  • 如果「一個為空一個不為空」,說明這兩顆樹不相同,則返回 false。
  • 如果「都不為空,但節(jié)點值不相同」,說明這兩顆樹不相同,則返回 false。
  • 經(jīng)過 1 和 2 和 3 的判斷,說明根節(jié)點「都不為空,但節(jié)點值相同」,則當前節(jié)點相同。我們繼續(xù)遞歸遍歷,比較它的左子樹和右子樹的根節(jié)點。

遞歸過程演示:

依次比較兩顆二叉樹中「當前樹(1、2、3、4、5、6)的根節(jié)點」是否相等,這樣每個節(jié)點都被比較了一次。

/**
 * Definition for a binary tree node.
 * struct TreeNode {
 *     int val;
 *     struct TreeNode *left;
 *     struct TreeNode *right;
 * };
 */
bool isSameTree(struct TreeNode* p, struct TreeNode* q){
    // 1. 先比較兩顆樹的根節(jié)點
    // 都為空,返回true,說明滿足相同的樹的條件
    if(p == NULL && q == NULL)
    {
        return true;
    }
    // 一個為空一個不為空,返回false
    if(p == NULL || q == NULL)
    {
        return false;
    }
    // 都不為空,但節(jié)點值不相等,返回false
    if(p->val != q->val)
    {
        return false;
    }
    // 2. 經(jīng)過前面的if的判斷,既然運行到這里了,說明當前節(jié)點相等
    // 則繼續(xù)比較左子樹和右子樹的根節(jié)點
    return isSameTree(p->left, q->left) && isSameTree(p->right, q->right);
}

時間復雜度:假設兩棵樹都有 n 個節(jié)點,最多比較 n 次,所以為 O ( N ) O(N) O(N)

空間復雜度:往下遞歸會開辟棧幀空間,函數(shù)返回時會還給操作系統(tǒng),所以「空間復雜度」和「遞歸的最大深度」有關,最壞情況下,「遞歸的最大深度」就是有 n 的節(jié)點二叉樹的最大深度,所以為 O ( N ) O(N) O(N)

  • 最大深度: 此樹為單邊樹,則深度為 n,最多向下創(chuàng)建 n 個棧幀,因為棧幀會邊用邊銷毀
  • 最小深度: 此樹為完全二叉樹/滿二叉樹,則深度為 log2(N+1)

到此這篇關于C語言詳解判斷相同樹案例分析的文章就介紹到這了,更多相關C語言判斷相同樹內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:

相關文章

  • 用C語言求冪函數(shù)和指數(shù)函數(shù)的方法

    用C語言求冪函數(shù)和指數(shù)函數(shù)的方法

    這篇文章主要介紹了用C語言求冪函數(shù)和指數(shù)函數(shù)的方法,即pow()函數(shù)和sqrt()函數(shù)的使用,需要的朋友可以參考下
    2015-08-08
  • c++雙向鏈表操作示例(創(chuàng)建雙向鏈、雙向鏈表中查找數(shù)據(jù)、插入數(shù)據(jù)等)

    c++雙向鏈表操作示例(創(chuàng)建雙向鏈、雙向鏈表中查找數(shù)據(jù)、插入數(shù)據(jù)等)

    這篇文章主要介紹了c++雙向鏈表操作示例,包括創(chuàng)建雙向鏈、刪除雙向鏈表、雙向鏈表中查找數(shù)據(jù)、插入數(shù)據(jù)等,需要的朋友可以參考下
    2014-05-05
  • String類的寫時拷貝實例

    String類的寫時拷貝實例

    下面小編就為大家?guī)硪黄猄tring類的寫時拷貝實例。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-01-01
  • C語言排序方法(冒泡,選擇,插入,歸并,快速)

    C語言排序方法(冒泡,選擇,插入,歸并,快速)

    這篇文章給大家分享C語言所有經(jīng)典排序方法,文章給大家提供完整的實例代碼幫助大家快速學習掌握C語言排序方法,感興趣的朋友一起看看吧
    2021-08-08
  • C語言 socketpair用法案例講解

    C語言 socketpair用法案例講解

    這篇文章主要介紹了C語言 socketpair用法案例講解,本篇文章通過簡要的案例,講解了該項技術(shù)的了解與使用,以下就是詳細內(nèi)容,需要的朋友可以參考下
    2021-08-08
  • C語言特殊符號的補充理解

    C語言特殊符號的補充理解

    這篇文章主要為大家介紹了C語言特殊符號的使用補充理解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-02-02
  • Qt實現(xiàn)圖形裁減

    Qt實現(xiàn)圖形裁減

    這篇文章主要為大家詳細介紹了Qt實現(xiàn)圖形裁減,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-06-06
  • C語言實現(xiàn)高精度加法的示例代碼

    C語言實現(xiàn)高精度加法的示例代碼

    高精度的本質(zhì)是將數(shù)字以字符串的形式讀入,然后將每一位分別存放入int數(shù)組中,通過模擬每一位的運算過程,來實現(xiàn)最終的運算效果,下面我們就來看看如何通過C語言實現(xiàn)高精度加法吧
    2023-11-11
  • c++ 防止頭文件重復引入的三種方法

    c++ 防止頭文件重復引入的三種方法

    這篇文章主要介紹了c++ 防止頭文件重復引入的三種方法,幫助大家更好的理解和學習使用c++,感興趣的朋友可以了解下
    2021-02-02
  • QT+ffmpeg實現(xiàn)視頻解析的示例詳解

    QT+ffmpeg實現(xiàn)視頻解析的示例詳解

    這篇文章主要為大家詳細介紹了如何利用QT+ffmpeg實現(xiàn)視頻解析功能,文中的示例代碼講解詳細,對我們學習Qt有一定幫助,需要的可以參考一下
    2022-09-09

最新評論