当前位置: 首页 > wzjs >正文

受欢迎的做pc端网站百度竞价推广

受欢迎的做pc端网站,百度竞价推广,学校网站手机站的建设方案,旅游网页效果图二叉树的直径是指二叉树中的最长路径。例如 在这棵树中,最长路径为4-3-2-5-6。这个最长路径是如何得出的呢?回顾之前做过的求深度的题目,我们发现二叉树的左右子树与自身结构相似,这自然地将问题分解为子问题,因此适合…

        二叉树的直径是指二叉树中的最长路径。例如

      

        在这棵树中,最长路径为4-3-2-5-6。这个最长路径是如何得出的呢?回顾之前做过的求深度的题目,我们发现二叉树的左右子树与自身结构相似,这自然地将问题分解为子问题,因此适合采用递归方法解决,那么二叉树的深度与直径是否存在某种联系呢?

        值得注意的是,最长路径必然存在"拐点"。例如在第二棵树中,路径在节点2处拐弯,得到以2为根节点的最长路径长度为3,即左子树最长链 + 右子树最长链 + 2(根节点与两个子树之间的边)。再看第三棵树中的节点5,同样遵循这一计算步骤。那么,在递归的"归"阶段,我们需要返回什么呢?以节点2为例,在返回时,我们将2-3-4这条左右子树中最长的链返回给节点5,即max(左子树最长链,右子树最长链) + 1。

综上所述,该问题的算法步骤可归纳为:

  1. 在递归遍历子树的同时计算树的直径;
  2. 当前节点作为"拐点"时的直径等于左子树最长链 + 右子树最长链 + 2;
  3. 返回给父节点的是以当前节点为根的子树的max(左子树最长链,右子树最长链) + 1。
    class Solution {
    public:int ans = 0;int Longest(TreeNode* root) {if (root == nullptr) {return -1;}int leftLen = Longest(root->left);int rightLen = Longest(root->right);ans = max(ans,leftLen + rightLen + 2);return max(leftLen,rightLen) + 1;}int diameterOfBinaryTree(TreeNode* root) {Longest(root);return ans;}
    };

        时间复杂度:O(n),每个点都会遍历一次

        空间复杂度:O(n),在最坏情况下,二叉树为一条链,需要O(n)栈空间 

http://www.dtcms.com/wzjs/96589.html

相关文章:

  • 做网站怎么跟客户谈话网络营销特点
  • 网站项目的流程营销型网站建站推广
  • 做视频网站 带宽计算网站怎么制作教程
  • 北京设计公司排行北京seo优化推广
  • 贸易公司寮步网站建设哪家好高级搜索引擎
  • 郑州怎么做外贸公司网站百度竞价系统
  • wordpress暴力西安seo外包行者seo
  • 个人网站做淘宝客会怎样企业宣传册
  • 在线解压缩网站网络seo排名
  • 手机传奇手游发布网站bt兔子磁力搜索引擎最新版
  • 网站备案查询是什么意思站长工具查询入口
  • 在线建设网站制作seo是哪个国家
  • 网站认证是什么电脑培训学校哪家最好
  • 城乡与住房建设厅网站首页怎么安装百度
  • 凯胜东营小程序开发沈阳seo推广
  • 做动态网站后台有单独的页面么北京网站优化企业
  • 福州做公司网站杭州排名优化软件
  • 做网站时怎样把文字放在中间长沙网站推广公司排名
  • 做蛋糕比较火的网站北京网站优化公司
  • 建设银行河南分行网站软件工程培训机构哪家好
  • 做管理信息的网站怎么做公司网站
  • 做外贸网站用哪些小语种青岛seo服务公司
  • 温岭手机网站建设百姓网推广电话
  • 怎么用webstorm做网站宁波厂家关键词优化
  • 汕头整站优化关键词推广软件
  • 湛江专业网站建设怎么做爱站小工具圣经
  • 黄冈商城网站建设百度提问首页
  • 电脑自己做网站可以吗国家高新技术企业查询
  • 图片网站模板上海培训机构
  • 专业提供网站建设服务包括哪些windows优化大师自动下载