朋友們、伙計們,我們又見面了,本期來給大家解讀一下LeetCode中第104道二叉樹OJ題,如果看完之后對你有一定的啟發(fā),那么請留下你的三連,祝大家心想事成!
數(shù)據(jù)結(jié)構(gòu)與算法專欄:數(shù)據(jù)結(jié)構(gòu)與算法
個? 人? 主? 頁?:stackY、
C 語 言 專 欄:C語言:從入門到精通
?LeetCode--104.二叉樹的最大深度:https://leetcode.cn/problems/maximum-depth-of-binary-tree/
目錄
1.題目介紹
2.實例演示
3.解題思路
代碼演示:
遞歸展開圖:
1.題目介紹
給定一個二叉樹,找出其最大深度。
二叉樹的深度為根節(jié)點到最遠(yuǎn)葉子節(jié)點的最長路徑上的節(jié)點數(shù)。
說明:?葉子節(jié)點是指沒有子節(jié)點的節(jié)點。
2.實例演示
3.解題思路
要求二叉樹的最大深度,我們同樣的也是采用遞歸遍歷的方法:
二叉樹的最大深度等價于:左右子樹的最大深度 + 1
要求1的高度,那么就得求它的左右子樹2、3的高度,要求2和3的高度就得分別求它們左右子樹的高度...依次類推,4的左右子樹高度為0,這時4返回給2時返回的高度為0+1(0表示它的左右子樹的高度為0,1表示它自己的高度為1),也就是說再返回時要加上自己本身的高度,所以2的左子樹的高度為1,再來計算2的右子樹5的高度,計算5的高度又得計算5的左右子樹的高度,5的左子樹高度為1,右子樹高度為0,取較大的為1,5返回2時再加上自己本身的高度為2,所以取2的左右子樹較高的高度為2,所以2返回1時再加上自己本身的高度為3.....依次類推,直到遍歷完整個二叉樹。所以最后整顆樹的高度為4。
代碼演示:
/** * Definition for a binary tree node. * struct TreeNode { * int val; * struct TreeNode *left; * struct TreeNode *right; * }; */ /* 解題思路: 二叉樹的最大深度等價于:左右子樹的最大深度 + 1 */ int maxDepth(struct TreeNode* root){ //為空樹就返回0 if(root == NULL) return 0; //計算左右子樹的深度 int High_Left = maxDepth(root->left) + 1; int High_Right = maxDepth(root->right) + 1; //比較左右子樹的大小,返回最大的深度 if(High_Left > High_Right) { return High_Left; } return High_Right; }
?遞歸展開圖:
?每一次遞歸的返回值并不是直接返回到最外面,而是返回上一層,這一點要注意。文章來源:http://www.zghlxwxcb.cn/news/detail-512508.html
朋友們、伙計們,美好的時光總是短暫的,我們本期的的分享就到此結(jié)束,最后看完別忘了留下你們彌足珍貴的三連喔,感謝大家的支持!??文章來源地址http://www.zghlxwxcb.cn/news/detail-512508.html
到了這里,關(guān)于二叉樹OJ題:LeetCode--104.二叉樹的最大深度的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!