首页 > 其他分享 >二叉树的最大宽度--google面试遇到过,他是要求求解所有路径path

二叉树的最大宽度--google面试遇到过,他是要求求解所有路径path

时间:2023-01-20 16:22:17浏览次数:68  
标签:node google -- self 路径 depth 二叉树 ans

543. 二叉树的直径

难度简单

给定一棵二叉树,你需要计算它的直径长度。一棵二叉树的直径长度是任意两个结点路径长度中的最大值。这条路径可能穿过也可能不穿过根结点。

 

示例 :
给定二叉树

          1
         / \
        2   3
       / \     
      4   5    

返回 3, 它的长度是路径 [4,2,1,3] 或者 [5,2,1,3]。

 

方法:深度优先搜索

class Solution:
    def diameterOfBinaryTree(self, root: TreeNode) -> int:
        self.ans = 1
        def depth(node):
            # 访问到空节点了,返回0
            if not node:
                return 0
            # 左儿子为根的子树的深度
            L = depth(node.left)
            # 右儿子为根的子树的深度
            R = depth(node.right)
            # 计算d_node即L+R+1 并更新ans
            self.ans = max(self.ans, L + R + 1)
            # 返回该节点为根的子树的深度
            return max(L, R) + 1

        depth(root)
        return self.ans - 1

 

  

 
链接:https://leetcode.cn/problems/diameter-of-binary-tree/solution/er-cha-shu-de-zhi-jing-by-leetcode-solution/
 

标签:node,google,--,self,路径,depth,二叉树,ans
From: https://www.cnblogs.com/bonelee/p/17062845.html

相关文章

  • new的作用
    用来初始化一段堆内存,new的返回值为该段堆内存的首地址,有且仅有一个*,int*a为(int*)(a),int*代表变量指向内存为int的地址,所以a代表的是指向内存为int的地址的变量  int**......
  • 北京现代飞思车机第三方APP重新签名步骤
    测试需谨慎,仅供参考~~~~~~1.安装JAVA模拟器并配置环境变量工具下载以及配置说明的地址:http://www.downza.cn/soft/219583.html楼主的环境变量配置请看附录1 2.准备......
  • springboot允许跨域访问
    前后端开发学习中,vue里面需要跨域访问后台数据可在springboot后台里面添加个配置类即可:packagecom.springboottest.config;importorg.springframework.beans.factor......
  • git
    gittouse.目录gittouse.0.gitschematicgraph.1.systemtoconfigure.00.配置用户名邮箱.01.配置公钥.2.gitcommandandusingprocess.00.本地仓库初始化.01.clone......
  • Servlet18 - DispatcherController
    DispatcherServlet-设置中央控制器创建核心控制器,拦截所有请求进行处理,然后将请求发送给相应xxController=调用xxController方法处理请求将原本的xxServlet改......
  • 补博客 5 ( 1 )
    1005.K次取反后最大化的数组和publicintlargestSumAfterKNegations(int[]nums,intk){if(nums.length==1){returnk%2==1?-nums[......
  • 一文学会Flex布局
    参考:《CSS权威指南》(第四版)flex布局教程-语法篇-阮一峰1、Flex布局是什么FlexBox,弹性盒布局,顾名思义,就是元素具有弹性,能根据可用空间大小增减尺寸。2、基本概念......
  • python/c++ 混合编程
    官方简介pybind11isalightweightheader-onlylibrarythatexposesC++typesinPythonandviceversa,mainlytocreatePythonbindingsofexistingC++code.......
  • 使用ansible部署缓存服务器
    DNS缓存服务器是一种不负责域名数据维护的DNS服务器。简单来说,缓存服务器就是把用户经常使用到的域名与IP地址的解析记录保存在主机本地,从而提升下次解析的效率,这次使用unb......
  • 前后端分离 & YApi接口管理 & Swagger【reggie_take_out】
    前后端分离YApi接口管理Swagger......