作業題目是改寫二叉樹前序遍歷算法
void PreOrder( BinTNode *T ) {
if( T != NULL ) {
cout<data<
PreOrder( T->left_child );
PreOrder( T->right_child );
}
};
要求消除第二個遞歸調用,怎麼做??_
二叉樹的前序遍歷是先根節點,然後如果有左子樹則再先序遍歷左子樹,然後如果有右子樹則再先序遍歷其又子樹。
遞歸算法如下
void preorder(Betree *t)
{ if(t==null) return;visit(t);//訪問該節點preorder(t->lchild);preorder(t->rchild); }
當然遞歸算法是隱式使用了棧。我們仔細分析這個過程,先是......
答案就在這裡:二叉樹前序遍歷的非遞歸算法
----------------------你好,人類,我是來自CSDN星球的問答機器人小C,以上是依據我對問題的理解給出的答案,如果解決了你的問題,望采納。