中序遍历比较重要,再次对其作出重点解释。
//中序遍历
void inPrint(BiTree p)
{
stack<BiTree> st;
BiTree pr = p;
int is_empty_stack = 0;
do
{
while(pr != NULL)
{
st.push(pr);
pr = pr->lchild;
}
if(!st.empty())
{
pr = st.top();
st.pop();
cout << pr->data << " ";
pr = pr->rchild;
}else
{
is_empty_stack = 1;
}
}while(!is_empty_stack);
}
先序遍历
//先序遍历
void proPrint(BiTree p)
{
stack<BiTree> st;
BiTree pr = p;
do
{
cout << pr->data << " ";
if(pr->rchild != NULL)
st.push(pr->rchild);
pr = pr->lchild;
if(pr == NULL)
{
pr = st.top();
st.pop();
}
}while(pr != NULL);
cout << endl;
}