栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

二叉树的直径(Java)

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

二叉树的直径(Java)

二叉树的直径

(牛客网—牛客题霸算法篇—NC)

题目描述

给定一颗二叉树,求二叉树的直径。
1.该题的直径定义为:树上任意两个节点路径长度的最大值
2.该题路径长度定义为:不需要从根节点开始,也不需要在叶子节点结束,也不需要必须从父节点到子节点,一个节点到底另外一个节点走的边的数目
3.这个路径可能穿过根节点,也可能不穿过
4.树为空时,返回 0

思路

Java实现
这题可以看作是求二叉树深度的变形。

定义一个全局变量res,用于存储当前的最大直径。

使用递归以此计算左右子树的深度,将深度之和与res比较,将较大的值存入res。

代码实现
import java.util.*;

public class Solution {
    int res=0;//记录最大直径
    public int diameterOfBinaryTree (TreeNode root) {
        // write code here
        dfs(root);
       // return res;
    }
    public int dfs(TreeNode root){//找最大深度
        if(root==null)
            return 0;
        int left=dfs(root.left);
        int right=dfs(root.right);
        res=Math.max(res,left+right);
        return Math.max(left,right)+1;
    }
}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/631647.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号