原文链接: http://www.cnblogs.com/grandyang/p/6864398.html
class Solution {
public:
int longestConsecutive(TreeNode* root) {
if (!root) return 0;
int res = helper(root, 1) + helper(root, -1) + 1;
return max(res, max(longestConsecutive(root->left), longestConsecutive(root->right)));
}
int helper(TreeNode* node, int diff) {
if (!node) return 0;
int left = 0, right = 0;
if (node->left && node->val - node->left->val == diff) {
left = 1 + helper(node->left, diff);
}
if (node->right && node->val - node->right->val == diff) {
right = 1 + helper(node->right, diff);
}
return max(left, right);
}
};
本文介绍了一个用于寻找二叉树中最长连续序列的算法实现。通过递归方式,该算法能够高效地找到从任一节点开始的最长连续路径长度。代码中详细展示了如何使用辅助函数来检查左右子树是否符合连续序列条件。
391

被折叠的 条评论
为什么被折叠?



