543. 二叉树的直径

一 题目:

二 思路:

  • 分析下,二叉树的最长路径某个结点的左孩子最大深度加右孩子的最大深度
  • 我们只需要找出每一个节点的 左子树最大深度 + 右子树最大深度 的值,然后不断更新全局变量max 就行了

三 代码:

class Solution {
    int max;
    public int diameterOfBinaryTree(TreeNode root) {
        //分析下,二叉树的最长路径某个结点的左孩子最大深度加右孩子的最大深度
        max=0;
        dfs(root);
        return max;
    }

    /**
     * 返回树的深度
     */
    private int dfs(TreeNode root) {
        if (root==null){
            return 0;
        }
        //左子树的深度
        int lDeep= dfs(root.left);
        //右子树的深度
        int rDeep= dfs(root.right);

        max=Math.max(max,lDeep+rDeep);
        return Math.max(lDeep,rDeep)+1;
    }
}
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 解题思路 一条路径的长度为该路径经过的节点数减一,所以求直径(即求路径长度的最大值)等效于求路径经过节点数的最大值...
    等不了天明等时光阅读 1,157评论 0 0
  • 题目:二叉树的直径 给定一棵二叉树,你需要计算它的直径长度。一棵二叉树的直径长度是任意两个结点路径长度中的最大值。...
    软饭王阅读 891评论 0 0
  • 题目描述 给定一棵二叉树,你需要计算它的直径长度。一棵二叉树的直径长度是任意两个结点路径长度中的最大值。这条路径可...
    topshi阅读 3,795评论 0 1
  • 题目 给定一棵二叉树,你需要计算它的直径长度。一棵二叉树的直径长度是任意两个结点路径长度中的最大值。这条路径可能穿...
    唐三斤阅读 789评论 0 0
  • 给定一棵二叉树,你需要计算它的直径长度。一棵二叉树的直径长度是任意两个结点路径长度中的最大值。这条路径可能穿过也可...
    geaus阅读 1,585评论 0 0

友情链接更多精彩内容