您的位置:首页 > 其它

BST(或者普通树)的中序遍历非递归版本

2012-11-19 23:06 204 查看
写了一下中序的迭代版本。用了昨天的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;

}
}


我总结的就是,需要递归到头才做的事情(这里是根和右子树),压栈处理,等其他处理好之后把它提取出来,做之前同样的处理即可。

前序和后序的明天补上,困。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: