国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

剛學(xué)完二叉樹,來試試這些oj題練練手吧!

這篇具有很好參考價(jià)值的文章主要介紹了剛學(xué)完二叉樹,來試試這些oj題練練手吧!。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

剛學(xué)完二叉樹,來試試這些oj題練練手吧!,刷題集,數(shù)據(jù)結(jié)構(gòu),算法,c語言

??個(gè)人主頁:?? :???初階牛???
??推薦專欄1: ??????C語言初階
??推薦專欄2: ??????C語言進(jìn)階
??個(gè)人信條: ??知行合一
??本篇簡(jiǎn)介:>:記錄力扣的一些有關(guān)二叉樹的入門題目.分享解題經(jīng)驗(yàn).
c語言實(shí)現(xiàn):單值二叉樹,相同的樹,對(duì)稱二叉樹
金句分享:
?總不能一生碌碌無為,還安慰自己平凡可貴吧.?

前言

二叉樹 主要就是玩遞歸,相信大家學(xué)完 二叉樹 以后,對(duì)遞歸有了更加深層的理解,可以試著做幾道oj題,練一下手.

一、單值二叉樹

聲明:
題目來源于–力扣
題目鏈接: 傳送門

題目描述:

如果 二叉樹 每個(gè)節(jié)點(diǎn)都具有相同的值,那么該 二叉樹 就是 單值二叉樹
給定一棵樹,如果這棵樹是 單值二叉樹 時(shí),
返回 true;
否則返回 false

示例1:
剛學(xué)完二叉樹,來試試這些oj題練練手吧!,刷題集,數(shù)據(jù)結(jié)構(gòu),算法,c語言

輸入:[1,1,1,1,1,null,1]
輸出:true

示例2:
剛學(xué)完二叉樹,來試試這些oj題練練手吧!,刷題集,數(shù)據(jù)結(jié)構(gòu),算法,c語言

輸入:[2,2,2,5,2]
輸出:false

解題思路:

  1. 遞歸結(jié)束條件,遇到NULL返回true
  2. 判斷根節(jié)點(diǎn)的值與左子樹的值是否相等.
    不相等返回false
  3. 判斷根節(jié)點(diǎn)的值與右子樹的值是否相等.
    不相等返回false
  4. 返回遞歸遍歷這顆樹的邏輯值.

代碼實(shí)現(xiàn):

bool isUnivalTree(struct TreeNode* root){
    if(root==NULL)
    {
        return true;
    }
    //判斷根節(jié)點(diǎn)的值與左子樹的值是否相等.
    if(root->left&&root->val!=root->left->val)
    {
        return false;
    }
    //判斷根節(jié)點(diǎn)的值與右子樹的值是否相等.
    if(root->right&&root->val!=root->right->val) 
    {
        return false;
    }
    return isUnivalTree(root->left)&&isUnivalTree(root->right);
}

提交記錄:
剛學(xué)完二叉樹,來試試這些oj題練練手吧!,刷題集,數(shù)據(jù)結(jié)構(gòu),算法,c語言

二、相同的樹

聲明:
題目來源于–力扣
題目鏈接: 傳送門

題目介紹:

給你兩棵 二叉樹 的根節(jié)點(diǎn) pq ,編寫一個(gè)函數(shù)來檢驗(yàn)這兩棵樹是否相同。

如果兩個(gè)在結(jié)構(gòu)上相同,并且節(jié)點(diǎn)具有相同的值,則認(rèn)為它們是相同的。
相同返回:true
不同返回:false

示例1:
剛學(xué)完二叉樹,來試試這些oj題練練手吧!,刷題集,數(shù)據(jù)結(jié)構(gòu),算法,c語言

輸入:p = [1,2,3], q = [1,2,3]
輸出:true

示例2:
剛學(xué)完二叉樹,來試試這些oj題練練手吧!,刷題集,數(shù)據(jù)結(jié)構(gòu),算法,c語言

輸入:p = [1,2], q = [1,null,2]
輸出:false

解題思路

  1. 先考慮兩棵樹其中一棵為NULl的情況,返回false
    (注意不是指一整顆樹為NULl,而是指一方節(jié)點(diǎn)).
    例如:
    示例2中,第一顆樹的左子樹是值為2的結(jié)點(diǎn),但是第二棵樹的左子樹是NULL.

  2. 兩棵樹都為NULL,返回true

  3. 判斷兩顆樹的結(jié)點(diǎn)值是否相等.
    不相等則返回false

  4. 返回最后遍歷結(jié)果的邏輯值.

代碼實(shí)現(xiàn):

bool isSameTree(struct TreeNode* p, struct TreeNode* q){
    //兩方都為空
    if(p==NULL&&q==NULL)
    {
        return true;
    }
    //此時(shí)說明雙方都不為空
    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);
}

提交記錄:
剛學(xué)完二叉樹,來試試這些oj題練練手吧!,刷題集,數(shù)據(jù)結(jié)構(gòu),算法,c語言

三、對(duì)稱二叉樹

聲明:
題目來源于–力扣
題目鏈接:

題目介紹:

給你一個(gè) 二叉樹 的根節(jié)點(diǎn) root , 檢查它是否軸對(duì)稱。
對(duì)稱:返回true.
不對(duì)稱:返回false

剛學(xué)完二叉樹,來試試這些oj題練練手吧!,刷題集,數(shù)據(jù)結(jié)構(gòu),算法,c語言

輸入:root = [1,2,2,3,4,4,3]
輸出:true

剛學(xué)完二叉樹,來試試這些oj題練練手吧!,刷題集,數(shù)據(jù)結(jié)構(gòu),算法,c語言

輸入:root = [1,2,2,null,3,null,3]
輸出:false

解題思路:

難點(diǎn)在于,對(duì)稱 二叉樹 是需要遍歷到左子樹之后,回到根節(jié)點(diǎn),去與右子樹比較,為了實(shí)現(xiàn)這一要求,我們可以另寫一個(gè)函數(shù),直接將這棵樹用兩個(gè)root訪問.從最開始的根節(jié)點(diǎn)開始,將這顆 二叉樹 切割為 二叉樹 .

  1. 創(chuàng)建一個(gè)子函數(shù)check.參數(shù)為(struct TreeNode* root1,struct TreeNode* root2)
  2. 先判斷這兩顆樹的根節(jié)點(diǎn)是否為NULL.為空則直接返回true.
  3. 一方為NULl時(shí):返回false.
  4. 判斷root1的值和root2的值是否相等.
  5. root1遞歸時(shí)先訪問其左子樹,root2遞歸時(shí)先訪問其右子樹.
  6. root1遞歸 后訪問右子樹,root2遞歸 后訪問左子樹.
  7. 返回遞歸結(jié)果的邏輯值.

代碼實(shí)現(xiàn)

bool check(struct TreeNode* root1,struct TreeNode* root2)
{
    if(root1==NULL&&root2==NULL)
       return true;
    //上面已經(jīng)判斷了都為NULL時(shí)的情況,則此時(shí)判斷如果一方為空
    if(root1==NULL||root2==NULL)
        return false;
    if(root1->val!=root2->val)
        return false;
       //注意這里的遞歸順序,重點(diǎn)
    return check(root1->left,root2->right)&& check(root1->right,root2->left);
}
bool isSymmetric(struct TreeNode* root){
   return check(root,root);
}

提交記錄:
剛學(xué)完二叉樹,來試試這些oj題練練手吧!,刷題集,數(shù)據(jù)結(jié)構(gòu),算法,c語言

練習(xí)完這幾道oj題,相信大家對(duì)二叉樹有了更深層的理解了.
如果文章有幫助的話,可以給牛牛來一個(gè)一鍵三連嗎?
剛學(xué)完二叉樹,來試試這些oj題練練手吧!,刷題集,數(shù)據(jù)結(jié)構(gòu),算法,c語言文章來源地址http://www.zghlxwxcb.cn/news/detail-517944.html

到了這里,關(guān)于剛學(xué)完二叉樹,來試試這些oj題練練手吧!的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 二叉樹OJ題:LeetCode--104.二叉樹的最大深度

    二叉樹OJ題:LeetCode--104.二叉樹的最大深度

    朋友們、伙計(jì)們,我們又見面了,本期來給大家解讀一下LeetCode中第104道二叉樹OJ題,如果看完之后對(duì)你有一定的啟發(fā),那么請(qǐng)留下你的三連,祝大家心想事成! 數(shù)據(jù)結(jié)構(gòu)與算法專欄: 數(shù)據(jù)結(jié)構(gòu)與算法 個(gè)? 人? 主? 頁 ?: stackY、 C 語 言 專 欄 : C語言:從入門到精通 ?Leet

    2024年02月11日
    瀏覽(21)
  • 二叉樹OJ題:LeetCode--144.二叉樹的前序遍歷

    二叉樹OJ題:LeetCode--144.二叉樹的前序遍歷

    朋友們、伙計(jì)們,我們又見面了,本期來給大家解讀一下LeetCode中第144道二叉樹OJ題,如果看完之后對(duì)你有一定的啟發(fā),那么請(qǐng)留下你的三連,祝大家心想事成! 數(shù)據(jù)結(jié)構(gòu)與算法專欄: 數(shù)據(jù)結(jié)構(gòu)與算法 個(gè)? 人? 主? 頁 ?: stackY、 C 語 言 專 欄 : C語言:從入門到精通 ?Leet

    2024年02月13日
    瀏覽(24)
  • 二叉樹(OJ)

    二叉樹(OJ)

    ---------------------------------------------------哆啦A夢(mèng)的任意門------------------------------------------------------- 我們來看一下題目的具體要求: ?既然我們都學(xué)了二叉樹了,我們就應(yīng)該學(xué)會(huì)如何去遞歸。 分析一下: 我們?nèi)绻ビ帽闅v的思路去做,肯定是可以做出來的,遍歷嘛,先將第一

    2023年04月12日
    瀏覽(21)
  • Leetcode-二叉樹oj題

    Leetcode-二叉樹oj題

    144.?二叉樹的前序遍歷 https://leetcode.cn/problems/binary-tree-preorder-traversal/ 這個(gè)題目在遍歷的基礎(chǔ)上還要求返回?cái)?shù)組,數(shù)組里面按前序存放二叉樹節(jié)點(diǎn)的值。 既然要返回?cái)?shù)組,就必然要malloc一塊空間,那么我們需要算出這個(gè)二叉樹的節(jié)點(diǎn)個(gè)數(shù),所以就創(chuàng)建一個(gè)函數(shù)TreeSize求出節(jié)點(diǎn)

    2024年02月05日
    瀏覽(23)
  • 二叉樹基礎(chǔ)oj題目

    二叉樹基礎(chǔ)oj題目

    前文中,介紹了二叉樹的基本概念及基礎(chǔ)操作,進(jìn)一步對(duì)于二叉樹的遞歸遍歷及子問題的處理思想有了一定的了解。本文將帶來幾道二叉樹經(jīng)典的oj題目。 對(duì)稱二叉樹 平衡二叉樹 二叉樹的層序遍歷 leetcode題目鏈接 題目描述:給你一個(gè)二叉樹的根節(jié)點(diǎn) root , 檢查它是否軸對(duì)稱

    2024年01月21日
    瀏覽(14)
  • 每日OJ題_二叉樹dfs③_力扣814. 二叉樹剪枝

    每日OJ題_二叉樹dfs③_力扣814. 二叉樹剪枝

    目錄 力扣814. 二叉樹剪枝 解析代碼 814. 二叉樹剪枝 難度 中等 給你二叉樹的根結(jié)點(diǎn)? root ?,此外樹的每個(gè)結(jié)點(diǎn)的值要么是? 0 ?,要么是? 1 ?。 返回移除了所有不包含? 1 ?的子樹的原二叉樹。 節(jié)點(diǎn)? node ?的子樹為? node ?本身加上所有? node ?的后代。 示例 1: 示例 2: 示

    2024年02月22日
    瀏覽(15)
  • 數(shù)據(jù)結(jié)構(gòu)——二叉樹(OJ練習(xí))

    數(shù)據(jù)結(jié)構(gòu)——二叉樹(OJ練習(xí))

    大家好,本期是二叉樹的最后一期,這一期我們來看看二叉樹的編程題 . - 力扣(LeetCode) 首先我們的思路是: 遍歷二叉樹,把每個(gè)節(jié)點(diǎn)去比較一次,按照要求返回 我們來看代碼 . - 力扣(LeetCode) 這里我們的思路是:同時(shí)遍歷兩給樹,遇到空樹或者不相等時(shí)返回。 . - 力扣

    2024年04月12日
    瀏覽(19)
  • 二叉樹基礎(chǔ)oj題自測(cè)

    二叉樹基礎(chǔ)oj題自測(cè)

    解題思路: 遍歷二叉樹,并且每一個(gè)節(jié)點(diǎn)值都和根節(jié)點(diǎn)的值進(jìn)行比對(duì),如果不等于根節(jié)點(diǎn)的值,則不是單值樹。 解題思路: 首先比較根節(jié)點(diǎn)是否相同,然后分別比較左右子樹是否相同。 解題思路: 判斷一個(gè)樹是否對(duì)稱,首先要判斷左右孩子是否對(duì)稱相等,還需要判斷左孩

    2023年04月17日
    瀏覽(21)
  • 二叉樹OJ題(C++實(shí)現(xiàn))

    二叉樹OJ題(C++實(shí)現(xiàn))

    二叉樹的層序遍歷 OJ連接 主要思路是借助一個(gè)隊(duì)列,將每一層的數(shù)據(jù)以size統(tǒng)計(jì),當(dāng)size為0時(shí)說明該層數(shù)據(jù)已經(jīng)輸入完,將這一層的數(shù)據(jù)傳入vector中,再通過push_back 傳入 vector vector int 中 二叉樹的最近公共祖先OJ連接 共分為三種情況 第一種情況 尋找節(jié)點(diǎn)7與0的公共祖先為 根節(jié)

    2023年04月27日
    瀏覽(20)
  • 【深入理解二叉樹OJ題】

    【深入理解二叉樹OJ題】

    航班直達(dá)! 前序遍歷的思想。 思路:先判斷左右節(jié)點(diǎn)是否存在,再判斷根分別和左右節(jié)點(diǎn)的值是 否相等。 1.如果左子節(jié)點(diǎn)存在,但是值不等于根節(jié)點(diǎn)的值,返回false 2.如果右子節(jié)點(diǎn)存在,但是值不等于根節(jié)點(diǎn)的值,返回false 如果相等,遞歸其左子節(jié)點(diǎn)和右子節(jié)點(diǎn)。 不拿如果

    2023年04月18日
    瀏覽(16)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包