みなさん、こんにちは。私はキャベツに支配されている豚です。
勉強が大好きで、眠れず、食べるのを忘れている人は、女の子のシックで落ち着いた、無関心なコーディングのハンサムな男の子に夢中です。
記事のディレクトリ
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;
}
}
私は最近とても怠け者です。私は数日間質問を読んでいません。私は土曜日と日曜日の朝から夜まで本当に学びました。私はとても疲れています。将来は必死にそう言って感謝しますが、必死に聞くと戦場に行ったような感覚になり、勇敢ですが、学ぶことは本当に単調で退屈なプロセスです。