BST中最长的单值路径

时间:2018-12-29 17:49:29

标签: recursion binary-tree

我正在尝试解决问题:

给定一棵二叉树,找到路径中每个节点具有相同值的最长路径的长度。此路径可能会也可能不会通过根。

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

样本输入here

在输入大量内容时,我得到了错误的答案。我的代码通过了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;
        }
};

0 个答案:

没有答案