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

做网站有自己的服务器吗物流商 网站建设方案

做网站有自己的服务器吗,物流商 网站建设方案,广安建设机械网站,腾讯云网站建设教学视频教程二叉树的直径是指二叉树中的最长路径。例如 在这棵树中,最长路径为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/596093.html

相关文章:

  • 网站推广公司兴田德润电话多少wordpress文章图片本地化
  • 建设网站的推广的软文北京商场招商
  • wordpress主页显示关键词优化的策略
  • 公司定制网站建设公司专门做孕婴用品的网站
  • 网站栏目名seo推广优化
  • 番禺网站建设三杰科技中国建设银行网站的主要功能
  • 网站建设费用上海合肥晚报社官方网站
  • 如何提高网站加载速度慢wordpress文章tags
  • 目录网站做外链长沙seo培训
  • 如何建网站免费网站建设项目数
  • 网站建设投票主题cps广告是什么意思
  • 兰州网站建设和维护工作wordpress模板网
  • 哪些网站做的比较好看的图片唯品会网站建设数据安全分析
  • 网站开发公司哪里好网络优化大师手机版
  • 青海营销网站建设服务一元购网站开发
  • 30分钟seo网站淄博城乡建设局网站
  • 花生壳做网站需要备案值得买wordpress
  • 怎样做内网网站安徽建设局网站
  • 重庆家政网站建设网站建设项目验收表
  • 宁波网站建设哪里有手机微信网站链接
  • flash企业网站源码中国域名注册中心
  • 狍与女人做爰网站如何制作个人网站教程
  • 网站优化 图片百度关键词排名代发
  • 重庆一站式建设网站平台市场咨询公司排名
  • 墨鱼网站建设合肥企业网站推广
  • 房产类网站建设英国做暧小视频网站
  • 怎么做企业网站教程视频足球直播网站怎么做的
  • 张家港杨舍网站制作广州品牌型网站建设
  • 重庆网站推广什么个人 网站建设
  • 郑州企业网站制作艺术字logo生成器