У меня есть функция, которая вызывает себя 2 раза в своем теле, и я хочу сделать ее нерекурсивной, используя стек.
У меня есть следующее, чтобы найти глубину двоичного дерева.Это работает, но мне нужно преобразовать его в нерекурсивную функцию.Я думал об использовании stack
, но эта функция вызывает себя дважды в своем коде, по одному для каждой стороны.Как мне выполнить требование?
Это мой код до сих пор
struct Node{
int value;
Node* left;
Node* right;
};
int depth(const Node* n){
// 0 if null
if(n == nullptr) return 0;
// max(d(left), d(right)) + 1 otherwise
return max(depth(n->left), depth(n->right)) + 1;
}
int depthNoRecursion(const Node* n){
std::stack<Node*> s;
// Do something here...
}