recursion - BST中最长的单值路径
问题描述
我正在尝试解决问题:
给定一棵二叉树,找到路径中每个节点具有相同值的最长路径的长度。此路径可能会或可能不会通过根。
注意:两个节点之间的路径长度由它们之间的边数表示。
此处输入示例
我在大量输入时得到错误的答案。我的代码通过了 46 次测试,但之后失败了。我不明白我哪里出错了。有人可以帮忙吗。
这是我的代码:
class Solution
{
public:
int longestPath = 0;
int findLongestPath(TreeNode *root, int depth)
{
int leftDepth, rightDepth;
leftDepth = rightDepth = 0;
if (root->left != 0 && root->left->val == root->val)
leftDepth = findLongestPath(root->left, depth + 1);
if (root->right != 0 && root->right->val == root->val)
rightDepth = findLongestPath(root->right, depth + 1);
longestPath = max(longestPath, leftDepth + rightDepth);
return max(max(leftDepth, rightDepth), depth);
}
void traverse(TreeNode *root)
{
if (root == 0)
return;
findLongestPath(root, 0);
traverse(root->left);
traverse(root->right);
}
int longestUnivaluePath(TreeNode *root)
{
traverse(root);
return longestPath;
}
};
解决方案
推荐阅读
- java - 在自己的 maven-plugin "breaks" 安装插件目标中使用 lamda
- .net - 使用 Visual C# 生成 OCX activex 控件
- javascript - 如何避免在codeigniter的双击时间内插入两次
- json - JQ 过滤和映射基本:删除空值并将文本转换为小写
- javascript - 在 jquery 中获取结果“未定义”
- scala - DataFrame 和 RDD 计数方法为每个查询返回不同的大小。为什么?
- ruby - ruby 是否存在 MIME 标头解码器(RFC 2047)?
- angular - 如何隐藏 PrimeNG 数据表中动态列的列?
- php - 在输入字段中使用 php 放置默认值被 angularjs 清除
- hive - “<=>”hive 运算符的否定不能正常工作?