失效迭代器(Invalidating Iterators)当一个容器变化时,指向该容器中元素的迭代器可能失效。这使得在迭代器变化期间改变容器容易出现问题。在这方面,不同的容器提供不同的保障:vectors: 引起内存重新分配的插入运算使所有迭代器失效,插入也使得插入位置及其后位置的迭代器失效,删除运算使得删除位置及其后位置的迭代器失效.list/map: 插入不会使得任何迭代器失效;删除运算使指向删除位置的迭代器失效,但是不会失效其他迭代器.
话不多说,上代码前中序需要一个栈: stack<struct tree*> st;后序需要带标记的栈: stack<struct flagNode> sk;struct flagNode{ struct tree *ptr; bool right;}前序遍历: cout << "前序遍历\n"; p = root; while(p != NULL || !st.empty()) { if(p != NULL) { cout << p->data << ' '; if(p->rchild...