写了一下中序的迭代版本。用了昨天的BST测试了一下。对栈的使用得深刻理解。
void inorder(BSTnode* root)
{
BSTnode* p = root;
sq.push_back(p);
p = p->m_left;
while(!sq.empty())
{
while(p)
{
sq.push_back(p);
p = p->m_left;
}
p = *(sq.end()-1);
sq.pop_back();
cout << p->m_value << endl;
p = p->m_right;
}
}
我总结的就是,需要递归到头才做的事情(这里是根和右子树),压栈处理,等其他处理好之后把它提取出来,做之前同样的处理即可。
前序和后序的明天补上,困。