首页 > 其他分享 >[LeetCode Hot 100] LeetCode543. 二叉树的直径

[LeetCode Hot 100] LeetCode543. 二叉树的直径

时间:2023-12-27 18:15:22浏览次数:37  
标签:node right TreeNode LeetCode543 val int 二叉树 LeetCode left

题目描述

思路

所谓二叉树的直径,就是左右子树的最大深度之和。

方法一:

/**
 * 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 res = 0;
    public int diameterOfBinaryTree(TreeNode root) {
        postOrder(root);
        return res;
    }
    private int postOrder(TreeNode node) {
        if (node == null) return 0;
        int leftMaxDepth = postOrder(node.left);
        int rightMaxDepth = postOrder(node.right);
        res = Math.max(res, leftMaxDepth + rightMaxDepth);
        return Math.max(leftMaxDepth, rightMaxDepth) + 1;
    }
}

标签:node,right,TreeNode,LeetCode543,val,int,二叉树,LeetCode,left
From: https://www.cnblogs.com/keyongkang/p/17931117.html

相关文章

  • [LeetCode Hot 100] LeetCode104. 二叉树的最大深度
    题目描述思路熟练掌握二叉树的遍历算法方法一:层序遍历(迭代)+计数/***Definitionforabinarytreenode.*publicclassTreeNode{*intval;*TreeNodeleft;*TreeNoderight;*TreeNode(){}*TreeNode(intval){this.val=val;......
  • [LeetCode Hot 100] LeetCode110. 平衡二叉树
    题目描述思路LeetCode104.二叉树的最大深度变种方法一:后序遍历(递归、dfs)/***Definitionforabinarytreenode.*publicclassTreeNode{*intval;*TreeNodeleft;*TreeNoderight;*TreeNode(){}*TreeNode(intval){this.......
  • [LeetCode Hot 100] LeetCode111. 二叉树的最小深度
    题目描述思路二叉树的最小深度就是第一个叶子节点所在的层数方法一:前序遍历(递归、dfs)/***Definitionforabinarytreenode.*publicclassTreeNode{*intval;*TreeNodeleft;*TreeNoderight;*TreeNode(){}*TreeNode(intva......
  • [LeetCode Hot 100] LeetCode94. 二叉树的中序遍历
    题目描述思路熟练掌握迭代和递归的代码。递归:额外写一个函数voidinOrder(TreeNodenode,Listres)迭代:令cur=root,一直往左子树找,找到最后一个左子节点,当cur为空,就开始处理栈顶元素(将栈顶元素加入结果集),随后将cur设置为右子节点,继续执行以上操作。方法一:递归/***......
  • [LeetCode Hot 100] LeetCode144. 二叉树的前序遍历
    题目描述思路熟练掌握迭代和递归的代码。递归代码:额外写一个函数voidpreOrder(TreeNodenode,Listres)迭代代码:会用到数据结构——栈。先入栈当前节点的右子节点,再入栈左子节点。方法一:递归/***Definitionforabinarytreenode.*publicclassTreeNode{*......
  • [LeetCode Hot 100] LeetCode145. 二叉树的后序遍历
    题目描述思路递归:额外写一个函数voidpostOrder(TreeNodenode,Listres)迭代:前序遍历:根---左---右将前序遍历改造成:根---右---左然后反转根右左为:左---右---根,即为后序遍历优化一下:while(!stack.isEmpty()){ TreeNodenode=stack.pop(); res.addFirst(node.......
  • Leetcode每日一题
    目录202312/2512/2612/27202312月往前的应该就不会补题解了,大概有时间会往前一直补到12/1的题解12/251276.不浪费原料的汉堡制作方案题目分析:数学题,解二元一次方程即可具体过程有$$\left{\begin{array}{c}4x+2y=tomatoSlices\x+y=cheeseSlices\end{array}\right.$$......
  • map|动态规划|单调栈|LeetCode975:奇偶跳
    作者推荐【贪心算法】【中位贪心】.执行操作使频率分数最大涉及知识点单调栈动态规划map题目给定一个整数数组A,你可以从某一起始索引出发,跳跃一定次数。在你跳跃的过程中,第1、3、5…次跳跃称为奇数跳跃,而第2、4、6…次跳跃称为偶数跳跃。你可以按以下方式从索引i向后跳转......
  • 【动态规划】leetcode 不同路径问题
    题目名称:63.不同路径II链接:https://leetcode.cn/problems/unique-paths-ii/description/题目内容:一个机器人位于一个 mxn 网格的左上角(起始点在下图中标记为“Start”)。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为“Finish”)。......
  • 代码随想录算法训练营第十四天 | 二叉树理论基础,递归遍历,分别迭代遍历, 统一迭代遍历
    一、二叉树理论基础学习:1.从二叉树是否包含数值进行分类:无数值:完全二叉树和满二叉树有数值的:二叉搜索树和平衡二叉搜索树(AVL,Adelson-VelskyandLandis)。其中二叉搜索树指数值按照从小到大的顺序是左子树<根结点<右子树,平衡指的是左右子树高度差不超过12.二叉树存......