首页 > 其他分享 >leetcode543.二叉树的直径

leetcode543.二叉树的直径

时间:2024-12-09 18:00:45浏览次数:8  
标签:right leetcode543 int depth 二叉树 直径 root 节点 left

给你一棵二叉树的根节点,返回该树的 直径 。

二叉树的 直径 是指树中任意两个节点之间最长路径的 长度 。这条路径可能经过也可能不经过根节点 root 。

两节点之间路径的 长度 由它们之间边数表示。

示例 1:

输入:root = [1,2,3,4,5]
输出:3
解释:3 ,取路径 [4,2,1,3] 或 [5,2,1,3] 的长度。

示例 2:

输入:root = [1,2]
输出:1

提示:树中节点数目在范围 [1, 104] 内

思路: leetcode104.二叉树的最大深度-CSDN博客进阶版·,左右子树深度之和就是经过当前节点的当前最大直径// 左右子树深度之和就是经过当前节点的当前最大直径


    int length=0;
    public int diameterOfBinaryTree(TreeNode root) {
        depth(root,0);
        return length;

    }
    public int depth(TreeNode root,int height){
        if(root!=null){
            height++;
            int left=depth(root.left,0);
            int right=depth(root.right,0);
            height+=Math.max(left,right);
            // 左右子树深度之和就是经过当前节点的当前最大直径
            if(left+right>length)
                length=depth(root.left,0)+depth(root.right,0);
        }

        return height;
    }
}

标签:right,leetcode543,int,depth,二叉树,直径,root,节点,left
From: https://blog.csdn.net/m0_64995001/article/details/144353834

相关文章

  • 114. 二叉树展开为链表
    问题描述给你二叉树的根结点root,请你将它展开为一个单链表:展开后的单链表应该同样使用TreeNode,其中right子指针指向链表中下一个结点,而左子指针始终为null。展开后的单链表应该与二叉树先序遍历顺序相同。分析注意,这里应该使用同样的TreeNode,也就是评判时,直接看原......
  • LCR 047. 二叉树剪枝(中等)(主站814)
    https://leetcode.cn/problems/pOCWxh/https://leetcode.cn/problems/binary-tree-pruning/难度:☆☆☆题目:给定一个二叉树根节点root,树的每个节点的值要么是0,要么是1。返回移除了所有不包含1的子树的原二叉树。节点node的子树为node本身,以及所有node的后......
  • 二叉树的C++实现
    文章目录一、二叉树存储的物理结构1.1二叉树基础知识1.2二叉树的存储1.2.1单个节点的存储:1.2.2二叉树的存储二、C++代码实现2.1每个二叉树节点结构体:2.2二叉树类的定义2.3方法实现一、二叉树存储的物理结构1.1二叉树基础知识(1)二叉树的定义:每个节点最多......
  • 二叉树遍历
    前序顺序为根左右递归publicstaticvoidpreLoop(TreeNoderoot){System.out.println(root.value);if(root.left!=null){preLoop(root.left);}if(root.right!=null){preLoop(root.right);}}其他使用栈,以根右左的顺......
  • 【Leetcode Top 100】94. 二叉树的中序遍历
    问题背景给定一个二叉树的根节点rootrootroot,返回它的中序遍历。数据约......
  • 199.二叉树的右视图
    /***@param{TreeNode}root*@return{number[]}*/varrightSideView=function(root){if(!root)return[];letdethMap=newMap();//Map夺储,key是当国节点的高度,value是我们当前节点的信;letqueue=[[root,0]];while(queue.length){//取出......
  • c语言实现二叉树的创建、遍历(先序、中序、后序)
    二叉树是一种树形数据结构,其中每个节点最多有两个子节点,通常称为左子节点和右子节点。二叉树在计算机科学中具有广泛的应用,如表达式解析、数据存储与检索等。以下是有关二叉树的基本知识。1.二叉树的基本定义节点:二叉树的基本组成单元,包括节点值和指向其子节点的指针(左指......
  • 根据后序遍历完全二叉树构建树并输出中序遍历
    来看这道题:之前编者想了很久,该如何仅根据后序序列建树,在反复研磨遍历的特征后,我突然发现:对于完全二叉树,我们完全可以采用其在线性表示(用数组)的性质解题性质:根节点x, 左子树索引为2x,右子树索引为2x+1且不为空。则,我们只需按后序遍历的特点递归建树即可。上代码:......
  • 数据结构5——二叉树
    走上计算机的道路,疲惫和无力会不断向你袭来。虽途艰路险,然功成之日,往昔困厄皆为序章,亦足慰心怀,堪称圆满。目录1.树概念及结构1.1树的概念1.2树的相关概念1.3树的表示1.4树在实际中的运用(表示文件系统的目录树结构)2.二叉树概念及结构2.1概念2.2现实中的二叉树2.3特......
  • 洛谷P1305 新二叉树(c嘎嘎)
    题目链接:P1305新二叉树-洛谷|计算机科学教育新生态题目难度:普及刷题心得:做了几道这种类型的题都不用建树就可以解决,基本上还是利用好树的结构,例如这道题求前序序列(根左右)是可以用递归来求的。无非就是先从根出发,递归遍历左子树,递归遍历右子树,遇到 *直接返回就行了......