【LeetCode】バイナリツリー(簡単)(JAVA)のバイナリツリー直径543直径

【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パーセントを打ちます

公開された81元の記事 ウォンの賞賛6 ビュー2295

おすすめ

転載: blog.csdn.net/qq_16927853/article/details/104768840