首页 > 其他分享 >二叉树的直径(递归)

二叉树的直径(递归)

时间:2024-12-24 17:13:45浏览次数:4  
标签:right TreeNode 递归 int 二叉树 直径 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

 

/**
 * 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 {
public:
    int ans = 0;
    int diameterOfBinaryTree(TreeNode* root) {
        //本质上是计算每个节点的直径(即其左右子树深度之和),再统计出最大值
        depth(root);
        return ans;
    }
    int depth(TreeNode* root){
        if(root==nullptr){
            return 0;//访问到空节点,返回0
        }
        int L = depth(root->left);// 左儿子为根的子树的深度
        int R = depth(root->right);// 右儿子为根的子树的深度
        ans = max(ans,L+R);//// 计算该节点的直径,即L+R,并更新ans
        return max(L,R)+1;//返回以该节点为根的子树的深度
    }
};

 

标签:right,TreeNode,递归,int,二叉树,直径,root,节点,left
From: https://www.cnblogs.com/yueshengd/p/18628154

相关文章

  • Linux文件目录 --- 复制命令CP、递归复制目录、软连接、硬链接
    一、复制cp该命令用于复制文件或目录,下面是命令使用格式和常用的参数cp[参数]源文件或目录目标文件或目录                      #中间各有一个空格隔开参数作用-f覆盖同名文件或目录时不进行提醒-i          ......
  • LeetCode:222.完全二叉树节点的数量
    跟着carl学算法,本系列博客仅做个人记录,建议大家都去看carl本人的博客,写的真的很好的!代码随想录LeetCode:222.完全二叉树节点的数量给你一棵完全二叉树的根节点root,求出该树的节点个数。完全二叉树的定义如下:在完全二叉树中,除了最底层节点可能没填满外,其余每层节......
  • 第六章 二叉树part 01
    又是一种神奇的数据结构,可以让数据查询效率以指数级递减首先需要理解并掌握的是二叉树的遍历,遍历还分为两种,一种是递归遍历,代码简单到令人发指;另一种是迭代(是不是就是递推)今天只能先开个头,明天再补齐二叉树的递归遍历structTreeNode{intval;TreeNode*left;......
  • 【LeetCode】LCR 175.计算二叉树的深度
    题目链接:LCR175.计算二叉树的深度题目描述:思路一(深度优先搜索):使用深度优先搜索算法进行二叉树后序遍历复杂度分析:时间复杂度O(N):N为树的节点数量,计算树的深度需要遍历所有节点空间复杂度O(N):最差情况下(当树退化为链表时),递归深度可达到N/***Definitionfor......
  • 对称二叉树(递归)
    给你一个二叉树的根节点 root ,检查它是否轴对称。 示例1:输入:root=[1,2,2,3,4,4,3]输出:true示例2:输入:root=[1,2,2,null,3,null,3]输出:false /***Definitionforabinarytreenode.*structTreeNode{*intval;*TreeNode*left;*......
  • 翻转二叉树(递归)
    给你一棵二叉树的根节点 root ,翻转这棵二叉树,并返回其根节点。 示例1:输入:root=[4,2,7,1,3,6,9]输出:[4,7,2,9,6,3,1]示例2:输入:root=[2,1,3]输出:[2,3,1]示例3:输入:root=[]输出:[]/***Definitionforabinarytreenode.*structTreeNode{*......
  • 数据结构与算法 - 排序 #直接插入排序 #希尔排序 #直接选择排序 #堆排序 #冒泡排序 #
    文章目录前言一、插入排序(一)、直接插入排序1、思路2、参考代码:3、复杂度计算:(二)、希尔排序1、思路2、参考代码:3、时间复杂度计算:二、选择排序(一)、直接选择排序1、思路2、参考代码3、时间复杂度计算(二)、堆排序三、交换排序(一)、冒泡排序(二)、快速......
  • 二叉树的最大深度(递归)
    给定一个二叉树 root ,返回其最大深度。二叉树的 最大深度 是指从根节点到最远叶子节点的最长路径上的节点数。 示例1: 输入:root=[3,9,20,null,null,15,7]输出:3示例2:输入:root=[1,null,2]输出:2 /***Definitionforabinarytreenode.*structTree......
  • 二叉树的中序遍历(递归/栈)
    给定一个二叉树的根节点 root ,返回 它的 中序 遍历 。 示例1:输入:root=[1,null,2,3]输出:[1,3,2]示例2:输入:root=[]输出:[]示例3:输入:root=[1]输出:[1]方法1:递归/***Definitionforabinarytreenode.*structTreeNode{*intval;*......
  • 【递归,搜索与回溯算法 & 综合练习】深入理解暴搜决策树:递归,搜索与回溯算法综合小专题(
       优美的排列  题目解析     算法原理     解法 :暴搜     决策树   红色剪枝:用于剪去该节点的值在对应分支中,已经被使用的情况,可以定义一个check[]紫色剪枝:perm[i]不能够被i整除,i不能够被perm[i]整除,此时分......