完全二叉树最小深度_二叉树:我有多少个节点?
不管有多少個節點,大家中秋&&國慶快樂哈
?如果之前兩篇二叉樹:看看這些樹的最大深度, 二叉樹:看看這些樹的最小深度都認真看了的話,這道題目可以分分鐘刷掉了,愉快過節!
222.完全二叉樹的節點個數
給出一個完全二叉樹,求出該樹的節點個數。
示例:
思路
這道題目其實沒有必要強調是完全二叉樹,就是求二叉樹節點的個數。
依然可以使用遞歸法和迭代法來解決。
這道題目的遞歸法和求二叉樹的深度寫法類似, 而迭代法:二叉樹層序遍歷模板稍稍修改一下,記錄遍歷的節點數量就可以了。
遞歸遍歷的順序依然是后序(左右中)。
遞歸
如果對求二叉樹深度還不熟悉的話,看這篇:二叉樹:看看這些樹的最大深度。
代碼如下:
int?getNodesNum(TreeNode*?cur)?{代碼如下:
if?(cur?==?NULL)?return?0;代碼如下:
int?leftNum?=?getNodesNum(cur->left);??????//?左int?rightNum?=?getNodesNum(cur->right);????//?右
int?treeNum?=?leftNum?+?rightNum?+?1;??????//?中
return?treeNum;
所以整體C++代碼如下:
class?Solution?{private:
????int?getNodesNum(TreeNode*?cur)?{
????????if?(cur?==?0)?return?0;
????????int?leftNum?=?getNodesNum(cur->left);??????//?左
????????int?rightNum?=?getNodesNum(cur->right);????//?右
????????int?treeNum?=?leftNum?+?rightNum?+?1;??????//?中
????????return?treeNum;
????}
public:
????int?countNodes(TreeNode*?root)?{
????????return?getNodesNum(root);
????}
};
代碼精簡之后C++代碼如下:
class?Solution?{public:
????int?countNodes(TreeNode*?root)?{
????????if?(root?==?NULL)?return?0;
????????return?1?+?countNodes(root->left)?+?countNodes(root->right);
????}
};
迭代法
如果對求二叉樹層序遍歷還不熟悉的話,看這篇:二叉樹:層序遍歷登場!。
那么只要模板少做改動,加一個變量result,統計節點數量就可以了
class?Solution?{public:
????int?countNodes(TreeNode*?root)?{
????????queue?que;if?(root?!=?NULL)?que.push(root);
????????int?result?=?0;while?(!que.empty())?{
????????????int?size?=?que.size();for?(int?i?=?0;?i?????????????????TreeNode*?node?=?que.front();
????????????????que.pop();
????????????????result++;???//?記錄節點數量if?(node->left)?que.push(node->left);if?(node->right)?que.push(node->right);
????????????}
????????}return?result;
????}
};
總結
這道題目的解法其實我們在二叉樹:看看這些樹的最大深度和 二叉樹:看看這些樹的最小深度都有提到過了。
一樣的分析套路,代碼也差不多,估計此時大家最這一類求二叉樹節點數量以及求深度應該非常熟練了。
沒有做過這道題目的同學可以愉快的刷了它。
最后祝大家中秋&&國慶節日愉快哈!
在留言區留下你的思路吧!
-------end-------
我將算法學習相關的資料已經整理到了Github :https://github.com/youngyangyang04/leetcode-master,里面還有leetcode刷題攻略、各個類型經典題目刷題順序、思維導圖看一看一定會有所收獲,如果給你有幫助給一個star支持一下吧!
另外因為公眾號改版,時間線被打亂,一些精彩文章大家可能錯過了。如果感覺這里的文章對你有幫助,趕緊給「代碼隨想錄」加一個星標吧,方便第一時間閱讀文章。往期精彩回顧二叉樹:看看這些樹的最小深度二叉樹:看看這些樹的最大深度二叉樹:我對稱么?本周小結!(二叉樹)二叉樹:你真的會翻轉二叉樹么?二叉樹:層序遍歷登場!二叉樹:前中后序迭代方式的寫法就不能統一一下么?二叉樹:聽說遞歸能做的,棧也能做!二叉樹:一入遞歸深似海,從此offer是路人關于二叉樹,你該了解這些!「代碼隨想錄」期待你的關注!每天8:35準時推送一道經典算法題目,推送的每道題目都不是孤立的,而是由淺入深,環環相扣,幫你梳理算法知識脈絡,輕松學算法!
刷題可以加我微信!右邊為個人微信,添加時備注:「簡單自我介紹」+「組隊刷題」我就知道你[在看]總結
以上是生活随笔為你收集整理的完全二叉树最小深度_二叉树:我有多少个节点?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python计算召回率_序列标注的准确率
- 下一篇: 计算机的组成_计算机网络的组成和分类