LeetCode アルゴリズム再帰クラス - バイナリ ツリーの最大深さ

目次

104. 二分木の最大深さ

答え:

コード:

操作結果:


バイナリ ツリーを指定すると root 、その最大の深さを返します。

バイナリ ツリーの 最大の深さは 、ルート ノードから最も遠いリーフ ノードまでの最長パス上のノードの数です。

例 1:

入力: root = [3,9,20,null,null,15,7]
出力: 3

例 2:

入力: root = [1,null,2]
出力: 2

ヒント:

  • ツリー内のノードの数が [0, 104] 間隔内にあります。
  • -100 <= Node.val <= 100 

答え:

  • 再帰の核心は、この層が何を行うか、何を返すかのみに焦点を当てることであることを知っておく必要があります。次の層については、それについて心配する必要はありません。
  • タグ: DFS ディープサーチ
  • 終了条件: 現在のノードが空である
  • この層の戻り値: ノードが空の場合は 0 を返し、ノードが空でない場合は左右のサブツリーの最大高さを計算します(関数を再帰的に呼び出します。今後どのように再帰的に実行されるかは気にしません) 、このレイヤーは、現在の左右のサブツリーの最大の高さを取得する関数を呼び出す必要があるだけです)。現在のノードの高さを示すために1 を追加し、この値を返します。

コード:

/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode() {}
 *     TreeNode(int val) { this.val = val; }
 *     TreeNode(int val, TreeNode left, TreeNode right) {
 *         this.val = val;
 *         this.left = left;
 *         this.right = right;
 *     }
 * }
 */
class Solution {
    public int maxDepth(TreeNode root) {
        // 终止条件
        if(root==null) return 0;
        //递归遍历左子树
        int left=maxDepth(root.left);
        // 递归遍历右子树
        int right=maxDepth(root.right);
        // 
        return Math.max(left,right)+1;
    }
}

操作結果:

 

おすすめ

転載: blog.csdn.net/qq_62799214/article/details/132273658