Random Node
Node* tranverseRand(Node *root, int level, int count) {
if (level <= count) return root;
cout << root->value << endl;
pause();
srand(time(nullptr));
bool direction = rand() % 1;
if (root->right && direction)
tranverseRand(root->right, level, ++count);
else if(root->left && !direction)
tranverseRand(root->left, level, ++count);
// otherwise just take the path that exists
else if (root->right)
tranverseRand(root->right, level, ++count);
else
tranverseRand(root->left, level, ++count);
}
Node* getRandomNode(Node *root, int maxLevel) {
if (!root) return nullptr;
srand(time(nullptr));
int level = rand() % maxLevel; // [0 - maxLevel]
return tranverseRand(root, level, 0);
}Last updated