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

来源:互联网 发布:非凡软件怎么用 编辑:程序博客网 时间:2024/06/05 03:53

写了一下中序的迭代版本。用了昨天的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;}}


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

前序和后序的明天补上,困。