Untitled
unknown
plain_text
2 years ago
900 B
6
Indexable
class Solution {
private:
int maxDistance = 0;
public:
int amountOfTime(TreeNode* root, int start) {
traverse(root, start);
return maxDistance;
}
int traverse(TreeNode* root, int start) {
int depth = 0;
if (root == nullptr) {
return depth;
}
int leftDepth = traverse(root->left, start);
int rightDepth = traverse(root->right, start);
if (root->val == start) {
maxDistance = max(leftDepth, rightDepth);
depth = -1;
} else if (leftDepth >= 0 && rightDepth >= 0) {
depth = max(leftDepth, rightDepth) + 1;
} else {
int distance = abs(leftDepth) + abs(rightDepth);
maxDistance = max(maxDistance, distance);
depth = min(leftDepth, rightDepth) - 1;
}
return depth;
}
}; Editor is loading...
Leave a Comment