当前位置: 首页 > news >正文

leetcode543.二叉树的直径

当前顶点作为拐点时,求左子树加上右子树的高度可以求出该通过该顶点的直径大小,再对该顶点和左右子节点作为拐点时直径大小进行比对,返回最大值

缺点是递归了多次

/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode() {}
 *     TreeNode(int val) { this.val = val; }
 *     TreeNode(int val, TreeNode left, TreeNode right) {
 *         this.val = val;
 *         this.left = left;
 *         this.right = right;
 *     }
 * }
 */
class Solution {

    private int dfs(TreeNode root) {
        if (root == null) {
            return 0;
        } else {
            return 1 + Math.max(dfs(root.left), dfs(root.right));
        }
    }

    public int diameterOfBinaryTree(TreeNode root) {
        if(root==null)
            return 0;
        int leftHeight = dfs(root.left);
        int rightHeigh = dfs(root.right);
        return Math.max(leftHeight+rightHeigh,Math.max(diameterOfBinaryTree(root.left),diameterOfBinaryTree(root.right)));
    }
}

 

相关文章:

  • 【系统架构设计师】数据库系统 ② ( 分布式数据库 | 分布式数据库 特点 | 分布式数据库 分层模式 | 两阶段提交协议 - 2PC 协议 )
  • 浅谈WebSocket-FLV
  • 【Mysql】SQL 优化全解析
  • Java爬虫如何解析返回的JSON数据?
  • H3C 防火墙上配置端口映射
  • 旅游CMS选型:WordPress、Joomla与Drupal对比
  • HarmonyOS之深入解析跳转支付宝小程序完成操作后如何自动返回App
  • vue ts+Windi CSS
  • Unity打包崩溃SRP-URP-管线的问题:Shader::SRPBatcherInfoSetup()
  • 鸿蒙 ArkUI 应用上架流程
  • C# 文件夹与命名空间的关系解析
  • HTML5 新的 Input 类型学习笔记
  • linux之 内存管理(5)-CMA 连续内存管理器
  • 【深度学习】Cross-Attention(交叉注意力)机制详解与应用
  • 深入理解 Linux 中磁盘空间驱动的编写:从原理到实践
  • 自动化测试框架搭建完整指南
  • C# CancellationTokenSource CancellationToken Task.Run传入token 取消令牌
  • Celery 全面指南:Python 分布式任务队列详解
  • [MRCTF2020]套娃
  • 查看MYdql服务器状态/s
  • 简要说明网站建设的步骤/公司网站建设哪个好
  • 开发网站公司排行榜/百度知道网页版登录入口
  • 织梦英文版网站怎么做/seo是什么姓氏
  • 徐州企业建站系统/竞价排名软件
  • 安徽建设学校网站/白银网站seo
  • 旅游攻略的网站怎么做/seo分析报告