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

C語言單值二叉樹真題講解

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

【OJ - 二叉樹】單值二叉樹

LeetCode鏈接:單值二叉樹

題目難度:簡單

一、題目描述

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

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

二、解題思路

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

核心思路:

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

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

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

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

遞歸過程演示:

如果 a == b && a == c 為真,說明 1 是單值二叉樹。

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

/**
 * 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; // 空樹滿足單值二叉樹的條件
    }
    // 2. 判斷當(dāng)前節(jié)點(diǎn)和其左右孩子是否是單值二叉樹
    // 先判斷當(dāng)前節(jié)點(diǎn)的左孩子是否為空,并將當(dāng)前節(jié)點(diǎn)的值與左孩子的值進(jìn)行比較,看是否相等,
    // 如果相等,則繼續(xù)往下遍歷;如果不相等,說明不是單值二叉樹,則返回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)的左右子樹是不是單值二叉樹
    return isUnivalTree(root->left) && isUnivalTree(root->right);
}

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

到此這篇關(guān)于C語言單值二叉樹真題講解的文章就介紹到這了,更多相關(guān)C語言單值二叉樹內(nèi)容請搜索腳本之家以前的文章或繼續(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ì),對我們學(xué)習(xí)C++有一定幫助,需要的可以參考一下
    2023-01-01
  • 可讀可執(zhí)行的C語言簡歷源文件

    可讀可執(zhí)行的C語言簡歷源文件

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

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

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

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

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

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

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

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

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

    C++深入探究用NULL來初始化空指針是否合適

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

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

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

    C語言中的冒泡排序問題

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

    帶你粗略了解C++流的讀寫文件

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

最新評論

黎平县| 麻栗坡县| 监利县| 邛崃市| 彭泽县| 大厂| 县级市| 邳州市| 阿坝县| 巩留县| 汾西县| 诏安县| 惠来县| 交口县| 黄浦区| 郁南县| 东莞市| 香格里拉县| 富源县| 乌鲁木齐市| 拜城县| 安岳县| 自治县| 西充县| 恩平市| 连云港市| 长泰县| 虎林市| 临城县| 施甸县| 灌阳县| 兴隆县| 武功县| 济宁市| 巴林右旗| 贵德县| 龙门县| 鄂伦春自治旗| 巴东县| 海淀区| 永福县|