104. 二分木の最大深さ
バイナリ ツリーのルートを指定すると、その最大の深さを返します。
バイナリ ツリーの最大の深さは、ルート ノードから最も遠いリーフ ノードまでの最長パスに沿ったノードの数です。
例 1:
入力: root = [3,9,20,null,null,15,7]
出力: 3
例 2:
入力: root = [1,null,2]
出力: 2
制約:
- ツリー内のノードの数は [0, 1 0 4 10^4]の範囲内です。1 04 ]。
- -100 <= Node.val <= 100
From: LeetCode
Link: 104. バイナリ ツリーの最大深さ
解決:
アイデア:
Main 関数: maxDepth(struct TreeNode root) *
この関数はバイナリ ツリーの最大深さを再帰的に計算します。仕組みは次のとおりです。
-
基本ケース:ルート ノードが NULL の場合、深さは 0 です。これは、リーフ ノードの子 (存在しない) に到達したことを意味するため、0 を返します。
-
再帰的な場合:それ以外の場合、関数は再帰呼び出しを使用して左右のサブツリーの最大深さを計算します。
-
最大値を見つけて返す:最後に、関数は上記で取得した 2 つの深さの最大値を見つけ、それに 1 を加えます。1 を加算すると、現在のノードの深さが計算されます。
コード:
/**
* Definition for a binary tree node.
* struct TreeNode {
* int val;
* struct TreeNode *left;
* struct TreeNode *right;
* };
*/
int max(int a, int b) {
return (a > b) ? a : b;
}
int maxDepth(struct TreeNode* root) {
if (root == NULL) {
return 0;
}
int leftDepth = maxDepth(root->left);
int rightDepth = maxDepth(root->right);
return max(leftDepth, rightDepth) + 1;
}