【LeetCode】バイナリツリー(簡単)(JAVA)のバイナリツリー直径543直径
トピック住所:https://leetcode.com/problems/diameter-of-binary-tree/
件名の説明:
バイナリツリーを考えると、あなたは木の直径の長さを計算する必要があります。二分木の直径は、ツリー内の任意の2つのノード間の最長パスの長さです。このパスは、またはルートを通過してもしなくてもよいです。
例:
バイナリツリーを考えます
1
/ \
2 3
/ \
4 5
経路の長さであるリターン3、[4,2,1,3]又は[5,2,1,3]。
注:2つのノード間の経路の長さは、それらの間のエッジの数で表されます。
効果の対象に
バイナリツリーを考えると、あなたはその直径の長さを計算する必要があります。バイナリツリーは、経路長の任意の2つのノードの直径の最大長さです。このパスはルートを通過してもよいです。
問題解決のアプローチ
任意の2つのノード==任意のノードの最長経路左サブツリーの経路長
とトラバーサルは、ノードの最大の周りのすべてのノードを計算します
/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode(int x) { val = x; }
* }
*/
class Solution {
int max = 0;
public int diameterOfBinaryTree(TreeNode root) {
height(root);
return max;
}
public int height(TreeNode root) {
if (root == null) return 0;
int left = height(root.left);
int right = height(root.right);
if ((left + right) > max) max = left + right;
return Math.max(left, right) + 1;
}
}
実行時:0ミリ秒は、のJavaに提出するすべてのユーザーの100.00パーセントを破った
メモリ消費量:39.3メガバイト、Javaで提出するすべてのユーザの5.08パーセントを打ちます