最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C語(yǔ)言單值二叉樹(shù)真題講解

 更新時(shí)間:2022年04月24日 09:53:22   作者:CodeWinter  
單值二叉樹(shù)你可能之前沒(méi)見(jiàn)過(guò),如果二叉樹(shù)每個(gè)節(jié)點(diǎn)都具有相同的值,那么該二叉樹(shù)就是單值二叉樹(shù),讓我們通過(guò)一個(gè)真題來(lái)深刻了解它吧

【OJ - 二叉樹(shù)】單值二叉樹(shù)

LeetCode鏈接:單值二叉樹(shù)

題目難度:簡(jiǎn)單

一、題目描述

如果二叉樹(shù)每個(gè)節(jié)點(diǎn)都具有相同的值,那么該二叉樹(shù)就是 單值 二叉樹(shù)。

只有給定的樹(shù)是單值二叉樹(shù)時(shí),才返回 true;否則返回 false。

二、解題思路

二叉樹(shù)的遞歸遍歷,一般都會(huì)把問(wèn)題拆分成 當(dāng)前樹(shù)(根節(jié)點(diǎn)) 和 子樹(shù),然后子樹(shù)又進(jìn)行拆分,來(lái)解決問(wèn)題。

核心思路:

1.先判斷當(dāng)前節(jié)點(diǎn)是否為空,如果為空,返回 true(空樹(shù)也滿足單值二叉樹(shù)的條件)

2.判斷當(dāng)前樹(shù)是不是單值二叉樹(shù):

  • 先判斷當(dāng)前節(jié)點(diǎn)的左孩子是否為空;
  • 將 當(dāng)前節(jié)點(diǎn)的值 與 左孩子的值 進(jìn)行比較,如果相等,在右孩子不為空的情況下,繼續(xù)與 右孩子的值 進(jìn)行比較;
  • 如果不相等,說(shuō)明 當(dāng)前樹(shù) 不是單值二叉樹(shù),返回 false。

3.繼續(xù)往下遞歸遍歷,判斷當(dāng)前節(jié)點(diǎn)的左右子樹(shù)是不是單值二叉樹(shù)。

遞歸過(guò)程演示:

如果 a == b && a == c 為真,說(shuō)明 1 是單值二叉樹(shù)。

分而治之,不斷迭代,先判斷 1 是不是單值二叉樹(shù),再判斷 2 是不是單值二叉樹(shù),最后判斷 3 是不是單值二叉樹(shù)。

/**
 * Definition for a binary tree node.
 * struct TreeNode {
 *     int val;
 *     struct TreeNode *left;
 *     struct TreeNode *right;
 * };
 */
bool isUnivalTree(struct TreeNode* root){
    // 1. 先判斷當(dāng)前節(jié)點(diǎn)是否為空
    if(root == NULL)
    {
        return true; // 空樹(shù)滿足單值二叉樹(shù)的條件
    }
    // 2. 判斷當(dāng)前節(jié)點(diǎn)和其左右孩子是否是單值二叉樹(shù)
    // 先判斷當(dāng)前節(jié)點(diǎn)的左孩子是否為空,并將當(dāng)前節(jié)點(diǎn)的值與左孩子的值進(jìn)行比較,看是否相等,
    // 如果相等,則繼續(xù)往下遍歷;如果不相等,說(shuō)明不是單值二叉樹(shù),則返回false。
    if(root->left && root->val != root->left->val)
    {
        return false;
    }
    if(root->right && root->val != root->right->val)
    {
        return false;
    }
    // 3. 往下遍歷,判斷當(dāng)前節(jié)點(diǎn)的左右子樹(shù)是不是單值二叉樹(shù)
    return isUnivalTree(root->left) && isUnivalTree(root->right);
}

代碼中有個(gè)小思路,我們 if 的條件寫(xiě)的是,如果左孩子不為空,且當(dāng)前節(jié)點(diǎn)的值 != 左孩子的值,則返回 false,那為什么不寫(xiě)成:如果左孩子不為空,且當(dāng)前節(jié)點(diǎn)的值 == 左孩子的值,則怎么怎么樣……呢?因?yàn)閷?xiě) ==,不能直接得出一個(gè)結(jié)果,而寫(xiě) !=,就能得出結(jié)果 flase。

到此這篇關(guān)于C語(yǔ)言單值二叉樹(shù)真題講解的文章就介紹到這了,更多相關(guān)C語(yǔ)言單值二叉樹(shù)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 詳解C++?STL模擬實(shí)現(xiàn)list

    詳解C++?STL模擬實(shí)現(xiàn)list

    這篇文章主要為大家詳細(xì)介紹了C++如何模擬實(shí)現(xiàn)STL容器list,文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)C++有一定幫助,需要的可以參考一下
    2023-01-01
  • 可讀可執(zhí)行的C語(yǔ)言簡(jiǎn)歷源文件

    可讀可執(zhí)行的C語(yǔ)言簡(jiǎn)歷源文件

    這篇文章主要為大家家詳細(xì)介紹了可讀可執(zhí)行的C語(yǔ)言簡(jiǎn)歷源文件,感興趣的小伙伴們可以參考一下
    2016-07-07
  • 詳解C++中的異常和錯(cuò)誤處理機(jī)制

    詳解C++中的異常和錯(cuò)誤處理機(jī)制

    在C++編程中,異常處理和錯(cuò)誤處理機(jī)制是非常重要的,它們可以幫助程序員有效地處理運(yùn)行時(shí)錯(cuò)誤和異常情況,本文就來(lái)介紹一下C++中的異常處理和錯(cuò)誤處理機(jī)制吧
    2023-05-05
  • exit和atexit的區(qū)別詳細(xì)解析

    exit和atexit的區(qū)別詳細(xì)解析

    以下是對(duì)exit與atexit的區(qū)別進(jìn)行了詳細(xì)的分析介紹,需要的朋友可以過(guò)來(lái)參考下
    2013-09-09
  • 劍指offer之判斷鏈表是否包含環(huán)

    劍指offer之判斷鏈表是否包含環(huán)

    今天小編就為大家分享一篇關(guān)于劍指offer之判斷鏈表是否包含環(huán),小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧
    2019-02-02
  • C++中的Primer拷貝控制和資源管理詳解

    C++中的Primer拷貝控制和資源管理詳解

    這篇文章主要介紹了C++中的Primer拷貝控制和資源管理方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2025-03-03
  • C++深入探究用NULL來(lái)初始化空指針是否合適

    C++深入探究用NULL來(lái)初始化空指針是否合適

    在C++11新特性中,我們用nullptr來(lái)表示指針空值,這是為什么呢?好好地NULL為什么不繼續(xù)使用呢?說(shuō)明在創(chuàng)造C++的大佬們一定發(fā)現(xiàn)了什么Bug,本篇我們就一起來(lái)討論一下吧
    2022-05-05
  • 減小VC6編譯生成的exe文件的大小的方法

    減小VC6編譯生成的exe文件的大小的方法

    這篇文章主要介紹了減小VC6編譯生成的exe文件的大小的方法,需要的朋友可以參考下
    2015-01-01
  • C語(yǔ)言中的冒泡排序問(wèn)題

    C語(yǔ)言中的冒泡排序問(wèn)題

    這篇文章主要介紹了C語(yǔ)言中的冒泡排序問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-12-12
  • 帶你粗略了解C++流的讀寫(xiě)文件

    帶你粗略了解C++流的讀寫(xiě)文件

    這篇文章主要為大家總結(jié)了C++中輸入輸出流及文件流操作,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能給你帶來(lái)幫助
    2021-08-08

最新評(píng)論

汶川县| 金华市| 含山县| 漾濞| 大丰市| 许昌县| 比如县| 青河县| 莆田市| 镇平县| 东平县| 庄浪县| 镇沅| 平安县| 南郑县| 府谷县| 邛崃市| 定安县| 连平县| 灵宝市| 科尔| 青海省| 峨眉山市| 西乡县| 新平| 桦川县| 曲靖市| 凌源市| 元阳县| 汉阴县| 兴宁市| 建湖县| 成武县| 阜康市| 贵溪市| 南城县| 额济纳旗| 怀远县| 独山县| 定结县| 晋江市|