刷题20:二叉树的直径

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了刷题20:二叉树的直径相关的知识,希望对你有一定的参考价值。

Leetcode: 543. 二叉树的直径
要点:二叉树的直径就是左右子树和根节点构成的最长节点数量减一。设置一个中间变量max,每次寻找左右子树和根节点所构成的节点数量与max比较大小,较大的用max保存,直到最后所有左右子树和根节点构成的最长节点路径就是max,最后用max-1就是最大直径。该题的本质还是求树的深度。

class Solution {
    int max = Integer.MIN_VALUE;
    public int diameterOfBinaryTree(TreeNode root) {
        depth(root);
        return max - 1;
    }

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

以上是关于刷题20:二叉树的直径的主要内容,如果未能解决你的问题,请参考以下文章

leetcode刷题27.二叉树的直径——Java版

LeetCode Java刷题笔记—543. 二叉树的直径

刷题记录:leetcode543:二叉树的直径

二叉树面试题刷题模板(终极版)

二叉树的直径-leetocde543

543. 二叉树的直径