栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

687. 最长同值路径

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

687. 最长同值路径

class Solution 
{
public:
int res = 0;
	
	int dfs(TreeNode* cur)
	{
		if(cur == nullptr)
		{
			return 0;
		}
		
		int	leftNode = dfs(cur->left);//以 root的左子节点 为起点 的最长同值路径长度
		int	rightNode = dfs(cur->right); //以 root的右子节点 为起点 的最长同值路径长度
		
		if(cur->left != nullptr && cur->val == cur->left->val) // leftNode表示,以root节点为起点 向左节点延伸 的最长同值路径长度												
		{											// 如果root->left->val != root->val 那么一个点路径长是0
			++leftNode;
		}
		else
		{
			leftNode = 0;
		}
		
		if(cur->right != nullptr && cur->val == cur->right->val)// rightNode表示,以root节点为起点 向右节点延伸 的最长同值路径长度
		{
			++rightNode;
		}
		else
		{
			rightNode = 0;
		}

		res = max(res, leftNode + rightNode); // leftNode + rightNode就表示在以root为根节点的树上,经过root节点的最长同值路径的长度
		return max(leftNode, rightNode);//leftNode和rightNode中的最大值,表示以root节点为起点的最长同值路径长度
	}
    
	int longestUnivaluePath(TreeNode* root) 
    {
		dfs(root);
		return res;// +1 与 -1 抵消
    }
};
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/628808.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号