Самый длинный однозначный путь в BST - PullRequest
0 голосов
/ 29 декабря 2018

Я пытаюсь решить проблему:

По заданному двоичному дереву найдите длину самого длинного пути, где каждый узел в пути имеет одинаковое значение.Этот путь может проходить или не проходить через корень.

Примечание. Длина пути между двумя узлами представлена ​​числом ребер между ними.

Примеры входных данных здесь

Я получаю неправильный ответ на большом входе.Мой код проходит 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;
        }
};
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...