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

力扣---二叉樹(shù)OJ題(多種題型二叉樹(shù))

這篇具有很好參考價(jià)值的文章主要介紹了力扣---二叉樹(shù)OJ題(多種題型二叉樹(shù))。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。


前言

??個(gè)人主頁(yè):@小沈熬夜禿頭中????
??小編介紹:歡迎來(lái)到我的亂七八糟小星球??
??專(zhuān)欄:力扣—LeetCode刷題
??本章內(nèi)容:力扣—二叉樹(shù)OJ題
送給各位??:活著就意味著要必須做點(diǎn)什么 請(qǐng)好好努力
歡迎 評(píng)論?? +點(diǎn)贊?? +收藏?? +關(guān)注??哦~


提示:以下是本篇文章正文內(nèi)容,下面案例可供參考

??一、劍指 Offer 55 - I. 二叉樹(shù)的深度

輸入一棵二叉樹(shù)的根節(jié)點(diǎn),求該樹(shù)的深度。從根節(jié)點(diǎn)到葉節(jié)點(diǎn)依次經(jīng)過(guò)的節(jié)點(diǎn)(含根、葉節(jié)點(diǎn))形成樹(shù)的一條路徑,最長(zhǎng)路徑的長(zhǎng)度為樹(shù)的深度。
例如:
給定二叉樹(shù) [3,9,20,null,null,15,7],
返回它的最大深度 3 。

力扣---二叉樹(shù)OJ題(多種題型二叉樹(shù))

??1.1 鏈接:

劍指 Offer 55 - I. 二叉樹(shù)的深度

??1.2 代碼一:

int maxDepth(struct TreeNode* root)
{
    if(root==NULL)
    return 0;
    int leftTree=maxDepth(root->left);
    int rightTree=maxDepth(root->right);
    return leftTree>rightTree?leftTree+1:rightTree+1;
}

??1.3 代碼二:

這種代碼是正確的但是在力扣上是不能通過(guò)的時(shí)間太長(zhǎng)具體分析可以看數(shù)據(jù)結(jié)構(gòu)】—幾分鐘簡(jiǎn)單幾步學(xué)會(huì)手撕鏈?zhǔn)蕉鏄?shù)(中)中求二叉樹(shù)高度部分

int maxDepth(struct TreeNode* root)
{
	if (root == NULL)
		return 0;
	return maxDepth(root->left) > maxDepth(root->right) ?
		maxDepth(root->left) + 1 : maxDepth(root->right) + 1;
}

??1.4 流程圖:

力扣---二叉樹(shù)OJ題(多種題型二叉樹(shù))

??二、100. 相同的樹(shù)

給你兩棵二叉樹(shù)的根節(jié)點(diǎn) p 和 q ,編寫(xiě)一個(gè)函數(shù)來(lái)檢驗(yàn)這兩棵樹(shù)是否相同。
如果兩個(gè)樹(shù)在結(jié)構(gòu)上相同,并且節(jié)點(diǎn)具有相同的值,則認(rèn)為它們是相同的。

力扣---二叉樹(shù)OJ題(多種題型二叉樹(shù))

??2.1 鏈接:

100. 相同的樹(shù)

??2.2 思路:

采用前序,先比較 根 然后 左子樹(shù) 右子樹(shù),而結(jié)束條件就是為空樹(shù)或者不相等

??2.3 代碼:

bool isSameTree(struct TreeNode* p, struct TreeNode* q)
{
    if(p==NULL&&q==NULL)//兩者都為空樹(shù)則表示相同
    return true;
    if(p==NULL||q==NULL)//有一個(gè)不為空則不同
    return false;
    if(p->val!=q->val)//數(shù)值不同則不同
    return false;
    return isSameTree(p->left, q->left)&&isSameTree(p->right, q->right);//采用邏輯與當(dāng)左樹(shù)不相同時(shí),就沒(méi)必要比較右樹(shù)
}

??2.4 流程圖:

力扣---二叉樹(shù)OJ題(多種題型二叉樹(shù))

??三、965. 單值二叉樹(shù)

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

力扣---二叉樹(shù)OJ題(多種題型二叉樹(shù))

??3.1 鏈接:

965. 單值二叉樹(shù)

??3.2 思路:

采用傳遞性:ab bc <> ac,然后通過(guò)對(duì)比根節(jié)點(diǎn)和左子樹(shù),左子樹(shù),右子樹(shù)來(lái)判斷值是否相同

??3.3 代碼:

bool isUnivalTree(struct TreeNode* root)
{
    if(root==NULL)
    return true;
    if(root->left!=NULL&&root->left->val!=root->val)
    //左子樹(shù)不為空且左子樹(shù)的值和根值不同
    return false;
    if(root->right!=NULL&&root->right->val!=root->val)
    //右子樹(shù)不為空且右子樹(shù)的值和根值不同
    return false;
    return isUnivalTree(root->left)&&isUnivalTree(root->right);
}

??3.4 流程圖:

力扣---二叉樹(shù)OJ題(多種題型二叉樹(shù))

??四、101. 對(duì)稱(chēng)二叉樹(shù)

給你一個(gè)二叉樹(shù)的根節(jié)點(diǎn) root , 檢查它是否軸對(duì)稱(chēng)。

力扣---二叉樹(shù)OJ題(多種題型二叉樹(shù))

??4.1 鏈接:

101. 對(duì)稱(chēng)二叉樹(shù)

??4.2 思路:

因?yàn)槭?mark>軸對(duì)稱(chēng),所以要比較左子樹(shù)的值和右子樹(shù)的值相同。

??4.3 代碼:

bool _isSymmetric(struct TreeNode* leftRoot,struct TreeNode* rightRoot)
{
    if(leftRoot==NULL&&rightRoot==NULL)
    return true;
    if(leftRoot==NULL||rightRoot==NULL)
    return false;
    if(leftRoot->val!=rightRoot->val)
    return false;
    return _isSymmetric(leftRoot->left,rightRoot->right)
    &&_isSymmetric(leftRoot->right,rightRoot->left);
}
bool isSymmetric(struct TreeNode* root)
//這個(gè)函數(shù)是題給出的所以不能修改但不符合所以使用返回值
{
//因?yàn)轭}目給出根不為空所以只需要比較左右子樹(shù)就可以了
    return _isSymmetric(root->left,root->right);
}

??4.4 流程圖:

力扣---二叉樹(shù)OJ題(多種題型二叉樹(shù))

??五、144. 二叉樹(shù)的前序遍歷

??5.1 鏈接:

144. 二叉樹(shù)的前序遍歷

??5.2 代碼(錯(cuò)誤代碼):

下面這種寫(xiě)法是不能通過(guò)的,因?yàn)槊看握{(diào)用i++,都是各是各的造成了干擾具體可以看流程圖

int TreeSize(struct TreeNode* root)
{
    return root==NULL?0:TreeSize(root->left)+TreeSize(root->right)+1;
}
void _preorderTraversal(struct TreeNode* root, int* a,int i)
{
    if(root==NULL)
    return;
    a[i++]=root->val;
    _preorderTraversal(root->left,a,i);
    _preorderTraversal(root->right,a,i);
}
int* preorderTraversal(struct TreeNode* root, int* returnSize)
{
    *returnSize=TreeSize(root);
    int* a=(int*)malloc(sizeof(int)*(*returnSize));
    int i=0;
    _preorderTraversal(root,a,i);
    return a;
}

??5.3 流程圖:

力扣---二叉樹(shù)OJ題(多種題型二叉樹(shù))

??5.4 兩種解決方法:

5.4.1??第一種:給i傳地址

??代碼:
int TreeSize(struct TreeNode* root)
{
    return root==NULL?0:TreeSize(root->left)+TreeSize(root->right)+1;
}
void _preorderTraversal(struct TreeNode* root, int* a,int* pi)
{
    if(root==NULL)
    return;
    a[(*pi)++]=root->val;
    _preorderTraversal(root->left,a,pi);
    _preorderTraversal(root->right,a,pi);
}
int* preorderTraversal(struct TreeNode* root, int* returnSize)
{
    *returnSize=TreeSize(root);
    int* a=(int*)malloc(sizeof(int)*(*returnSize));
    int i=0;
    _preorderTraversal(root,a,&i);
    return a;
}

5.4.2??第而種:全局變量

??代碼:

一點(diǎn)注意:要在一次調(diào)用后置零,不然下次調(diào)用時(shí)就會(huì)出現(xiàn)i在上一次的基礎(chǔ)值上接著走而數(shù)組就不是從0開(kāi)始的

int TreeSize(struct TreeNode* root)
{
    return root==NULL?0:TreeSize(root->left)+TreeSize(root->right)+1;
}
int i=0;
void _preorderTraversal(struct TreeNode* root, int* a)
{
    if(root==NULL)
    return;
    a[i++]=root->val;
    _preorderTraversal(root->left,a);
    _preorderTraversal(root->right,a);
}
int* preorderTraversal(struct TreeNode* root, int* returnSize)
{
    *returnSize=TreeSize(root);
    int* a=(int*)malloc(sizeof(int)*(*returnSize));
    i=0;//注意這里
    _preorderTraversal(root,a);
    return a;
}


??總結(jié)

力扣---二叉樹(shù)OJ題(多種題型二叉樹(shù))
??Ending,今天的鏈?zhǔn)蕉鏄?shù)的內(nèi)容就到此結(jié)束啦~,如果后續(xù)想了解更多,就請(qǐng)關(guān)注我吧,一鍵三連哦 ~文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-465080.html

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

本文來(lái)自互聯(lián)網(wǎng)用戶(hù)投稿,該文觀點(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)文章

  • 二叉樹(shù)OJ題:LeetCode--101.對(duì)稱(chēng)二叉樹(shù)

    二叉樹(shù)OJ題:LeetCode--101.對(duì)稱(chēng)二叉樹(shù)

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

    2024年02月13日
    瀏覽(27)
  • 二叉樹(shù)OJ題:LeetCode--965.單值二叉樹(shù)

    二叉樹(shù)OJ題:LeetCode--965.單值二叉樹(shù)

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

    2024年02月12日
    瀏覽(31)
  • 二叉樹(shù)OJ題:LeetCode--104.二叉樹(shù)的最大深度

    二叉樹(shù)OJ題:LeetCode--104.二叉樹(shù)的最大深度

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

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

    二叉樹(shù)OJ題:LeetCode--144.二叉樹(shù)的前序遍歷

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

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

    二叉樹(shù)(OJ)

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

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

    Leetcode-二叉樹(shù)oj題

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

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

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

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

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

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

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

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

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

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

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

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

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

    2023年04月27日
    瀏覽(20)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包