力扣543. 二叉树的直径

Problem: 543. 二叉树的直径

题目描述

在这里插入图片描述在这里插入图片描述在这里插入图片描述

思路

1.最大直径 == 左子树的最大深度 + 右子树的最大深度
2.定义一个变量maxDiameter记录最大直径,并编写一个递归函数maxDepth,利用树的后序遍历每次递归求取leftMax(左子树的最大深度)和rightMax(右子树的最大深度),同时更新maxDiameter(maxDiameter == max(maxDiameter, (leftMax + rightMax)));递归函数每次返回1 + max(leftMax, rightMax)

复杂度

时间复杂度:

O ( n ) O(n) O(n);其中 n n n为数的节点个数

空间复杂度:

O ( h ) O(h) O(h);其中 h h h为树的高度

Code

/**
 * Definition for a binary tree node.
 * struct TreeNode {
 *     int val;
 *     TreeNode *left;
 *     TreeNode *right;
 *     TreeNode() : val(0), left(nullptr), right(nullptr) {}
 *     TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
 *     TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}
 * };
 */
class Solution {
    //Maximum recorded diameter
    int maxDiameter = 0;
public:
    /**
     *Find the maximum diameter
     *
     * @param root The root of binary tree
     * @return int
     */
    int diameterOfBinaryTree(TreeNode* root) {
        maxDepth(root);
        return maxDiameter;
    }
    /**
     * Post-order traversal
     *
     * @param root The root of binary tree
     * @return int
     */
    int maxDepth(TreeNode* root) {
        if (root == nullptr) {
            return 0;
        }
        int leftMax = maxDepth(root -> left);
        int rightMax = maxDepth(root -> right);
        //After the order position, find the maximum diameter
        int myDiameter = leftMax + rightMax;
        maxDiameter = max(myDiameter, maxDiameter);
        return 1 + max(leftMax, rightMax);
    }
};

相关推荐

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-03-10 10:04:04       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-03-10 10:04:04       100 阅读
  3. 在Django里面运行非项目文件

    2024-03-10 10:04:04       82 阅读
  4. Python语言-面向对象

    2024-03-10 10:04:04       91 阅读

热门阅读

  1. scikit-learn保姆级入门教程

    2024-03-10 10:04:04       35 阅读
  2. 服务器硬件基础知识

    2024-03-10 10:04:04       39 阅读
  3. 【Python+Selenium学习系列4】Selenium常用的方法

    2024-03-10 10:04:04       38 阅读
  4. 面试题:单例模式输出静态变量

    2024-03-10 10:04:04       41 阅读
  5. Kafka整理-Consumer(消费者)

    2024-03-10 10:04:04       37 阅读
  6. 微信小程序实现轮播图

    2024-03-10 10:04:04       37 阅读
  7. Spring Boot 整合 MongoDB:构建高效的数据驱动应用

    2024-03-10 10:04:04       40 阅读