LeetCode //C - 104. バイナリ ツリーの最大深さ

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) *
この関数はバイナリ ツリーの最大深さを再帰的に計算します。仕組みは次のとおりです。

  1. 基本ケース:ルート ノードが NULL の場合、深さは 0 です。これは、リーフ ノードの子 (存在しない) に到達したことを意味するため、0 を返します。

  2. 再帰的な場合:それ以外の場合、関数は再帰呼び出しを使用して左右のサブツリーの最大深さを計算します。

  3. 最大値を見つけて返す:最後に、関数は上記で取得した 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;
}

おすすめ

転載: blog.csdn.net/navicheung/article/details/132646117