由于递归时通过栈来实现的,虽然递归代码有时候看起来比较简单,然后递归太深就会造
成栈溢出。所以我们可以通过栈来实现二叉树的非递归遍历。下边看解析:
【先序遍历】
下边看实现代码:
void PreOrderTraverseNonR()
{
stack<Node*> s;
Node* cur = _root;
if (cur == NULL)
return;
while (cur || !s.empty())
{
while (cur)
{
cout << cur->_data << " ";
s.push(cur);
cur = cur->_left;
}
Node* top = s.top();
s.pop();
cur = to