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

普陀区网站建设公司哪家好大冶seo网站优化排名推荐

普陀区网站建设公司哪家好,大冶seo网站优化排名推荐,网站服务器修改登录密码,环境建设公司属于什么企业687. 最长同值路径 给定一个二叉树的 root ,返回 最长的路径的长度 ,这个路径中的 每个节点具有相同值 。 这条路径可以经过也可以不经过根节点。 两个节点之间的路径长度 由它们之间的边数表示。 示例 1: 输入:root [5,4,5,1,1,5] 输出&…

687. 最长同值路径

给定一个二叉树的 root ,返回 最长的路径的长度 ,这个路径中的 每个节点具有相同值 。 这条路径可以经过也可以不经过根节点。

两个节点之间的路径长度 由它们之间的边数表示。

示例 1:

在这里插入图片描述

输入:root = [5,4,5,1,1,5]
输出:2

示例 2:

在这里插入图片描述

输入:root = [1,4,5,4,4,5]
输出:2

提示:

  • 树的节点数的范围是 [0,104][0, 10^4][0,104]
  • -1000 <= Node.val <= 1000
  • 树的深度将不超过 1000

思路:DFS

分析:

对任意一个节点,有两种可能,最大路径可能经过该节点,或者不经过该节点

  • 最大路径经过该节点时:
    • 若该节点为最大路径的根节点root时, 路径长度左子树的路径长度加上右子树的路径长度
    • 若节点不是最大路径的根节点时,则最大路径的根节点root一定在其父节点上,此时返回其左右子树的路径的最大值
  • 最大路径不经过该节点时,返回0.

设计:(从下往上判断)

根据上述分析,设计递归函数int dfs(TreeNode root)

  • 含义为传入根节点 root, 返回最大路径经过该节点,但是该节点不是最大路径的根节点,即返回其左右子树的路径的最大值
  • 同时设置全局变量path,记录最大路径,在每个节点为根节点时判断更新,即左子树的路径长度加上右子树的路径长度
  • 在递归函数内部,先通过递归 root 的左右子节点,拿到以 root.leftroot.right 为起点的最大路径长度 leftright ,然后以root节点为最大路径的根节点 ,分别判断左右子树的val值是否等于root.val,如果相等则加1,不等则为0
  • 同时更新最大路径path

代码:(Java、C++)

Java

/*** Definition for a binary tree node.* public class TreeNode {*     int val;*     TreeNode left;*     TreeNode right;*     TreeNode() {}*     TreeNode(int val) { this.val = val; }*     TreeNode(int val, TreeNode left, TreeNode right) {*         this.val = val;*         this.left = left;*         this.right = right;*     }* }*/
class Solution {private int path = 0;public int longestUnivaluePath(TreeNode root) {dfs(root);return path;}public int dfs(TreeNode root){if(root == null) return 0;int left = dfs(root.left);int right = dfs(root.right);int leftPath = root.left != null && root.val == root.left.val ? 1 + left : 0;int rightPath = root.right != null && root.val == root.right.val ? 1 + right : 0;path = Math.max(path, leftPath + rightPath); return Math.max(leftPath, rightPath);}
}

C++

/*** 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 path = 0;int longestUnivaluePath(TreeNode* root) {dfs(root);return path;}int dfs(TreeNode* root){if(root == NULL) return 0;int left = dfs(root->left);int right = dfs(root->right);int leftPath = root->left != NULL && root->val == root->left->val ? 1 + left : 0;int rightPath = root->right != NULL && root->val == root->right->val ? 1 + right : 0;path = max(path, leftPath + rightPath); return max(leftPath, rightPath);}
};

运行结果:

复杂度分析:

  • 时间复杂度O(n)O(n)O(n),其中 n 为树的结点数目。
  • 空间复杂度O(n)O(n)O(n)。递归栈最坏情况下需要O(n)O(n)O(n)的空间。

题目来源:力扣。

放弃一件事很容易,每天能坚持一件事一定很酷,一起每日一题吧!
关注我 leetCode专栏,每日更新!

注: 如有不足,欢迎指正!

http://www.zhongyajixie.com/news/25765.html

相关文章:

  • 建筑做地图分析的网站信息流推广方式
  • 网站建设营销公司关联词有哪些四年级
  • 昆明高端网站设计北京百度seo
  • 如何在百度上添加店铺的位置优化生育政策
  • 有没有卖设计的网站直通车关键词怎么选 选几个
  • 怎么分析一个网站seo济南网站建设公司
  • 省品牌建设联合会网站搜索引擎优化通常要注意的问题有
  • 青岛展台搭建镇江搜索优化技巧
  • 学校网站规划方案一个万能的营销方案
  • 自媒体图片素材网站点击seo软件
  • dz论坛网站建设bing搜索
  • 山东建设局网站首页站长统计app进入网址
  • 培训建设网站湛江今日头条新闻
  • 网站建设元网站seo的方法
  • 做女装的网站有哪些建站平台在线提交功能
  • 响应式网站建设原则百度快照优化排名推广
  • 网站和app的区别广州疫情已经达峰
  • 新疆政府网站建设现状北京学电脑的培训机构
  • 一般网站做响应式吗免费网站提交入口
  • 招聘广告模板西安快速排名优化
  • wordpress4.9.4源码厦门seo培训
  • 现在出入河南最新规定seo推广外包
  • 如何提升网络营销推广seo顾问服务 品达优化
  • 南京建设局网站首页开网店怎么推广运营
  • 丰城市建设局网站莆田百度seo公司
  • 吕梁seo网站建设网站关键词优化案例
  • wordpress 安装 godaddy在哪里 上传的根目录免费发seo外链平台
  • 做程序网站需要什么代码吗营销型网站的公司
  • 移动网站开发源代码怎么才能在百度上做引流呢
  • 网站建设的工作职责搜索引擎优化的作用是什么