leetcode_树_543。二分木の直径(#)

みなさん、こんにちは。私はキャベツに支配されている豚です。

勉強が大好きで、眠れず、食べるのを忘れている人は、女の子のシックで落ち着いた、無関心なコーディングのハンサムな男の子に夢中です。

1.主題の内容

二分木が与えられた場合、その直径と長さを計算する必要があります。二分木の直径の長さは、任意の2つのノードのパスの長さの最大値です。このパスは、ルートノードを通過する場合と通過しない場合があります。
例:
二分木
1
/ \
2 3
/ \
4 5
が3を返し、その長さがパス[4,2,1,3]または[5,2,1,3]であるとします。
注:2つのノード間のパスの長さは、ノード間のエッジの数で表されます。

2つの問題解決のアイデア

まだフレームワークの考え方を使用しているので、タイトルに意味がありません。ここで注意する必要があるのは、「このパスはルートノードを通過する場合と通過しない場合があります」という文です。通過しないルートノードが存在する可能性があります。ルートノードを通るパスよりも長くなる可能性があります。

3、コードの実装

class Solution {
    
    
    private int max;
    public int diameterOfBinaryTree(TreeNode root) {
    
    
        if(root == null) return 0;
        getHeight(root);
        return max;
    }

    public int getHeight(TreeNode root) {
    
    
        if(root == null) return 0;
        int left = getHeight(root.left);
        int right = getHeight(root.right);
        int height =  Math.max(left,right)+1;
        max = Math.max(left + right ,max);
        return height;
    }

}

私は最近とても怠け者です。私は数日間質問を読んでいません。私は土曜日と日曜日の朝から夜まで本当に学びました。私はとても疲れています。将来は必死にそう言って感謝しますが、必死に聞くと戦場に行ったような感覚になり、勇敢ですが、学ぶことは本当に単調で退屈なプロセスです。

おすすめ

転載: blog.csdn.net/weixin_44226263/article/details/109438025