if (p->left!=NULL)
{
st.top++;
st.a[st.top]=p->left;
}
}
}
}
//中序遍歷,遞歸實現(xiàn)
void Inorder(BTree* bt)
{
if (NULL!=bt)
{
Inorder(bt->left);
printf("%c ",bt->data);
Inorder(bt->right);
}
}
//中序遍歷,非遞歸實現(xiàn)
/*
思想:利用棧。從根節(jié)點開始,循環(huán),只要有左子節(jié)點則進(jìn)棧,直到左子節(jié)點為空。接著彈出棧頂輸出,判斷該結(jié)點是否有右子節(jié)點,
若有則進(jìn)棧,若沒有繼續(xù)彈棧。有右子節(jié)點的情況,判斷該節(jié)點是否有左子節(jié)點,有則進(jìn)棧,直到左子節(jié)點為空;若該右子節(jié)點沒有
左子節(jié)點,則彈棧;判斷彈出的節(jié)點,是否有右子節(jié)點,若有則進(jìn)棧,沒有繼續(xù)彈棧;接著又要判斷剛進(jìn)棧的這個節(jié)點,是否有左子節(jié)點,有則進(jìn)棧,沒有則繼續(xù)彈棧。重復(fù)下去....
棧空,是判定條件。
*/
void Inorder2(BTree* bt)
{
BTree* p,*q;
Stack st;
st.top=-1;
if (NULL==bt)
{
return;
}
else
{
while (bt!=NULL)
{
st.top++;
st.a[st.top]=bt;
bt=bt->left;
}
相關(guān)推薦:
2010年9月計算機(jī)等級考試精華備考資料匯總 全國計算機(jī)等級考試二級C語言上機(jī)精選匯總
2010年計算機(jī)等級考試二級C語言教程匯總
2010年全國計算機(jī)等考二級C:程序設(shè)計實戰(zhàn)匯總