?? 6.47.c
字號:
6.47④ 編寫按層次順序(同一層自左至右)遍歷二叉樹的算法。
要求實現下列函數:
void LevelOrder(BiTree bt, char *ss);
/* travel BiTree bt by level, Return result by ss. */
二叉鏈表類型定義:
typedef char TElemType; // 設二叉樹的元素為char類型
typedef struct BiTNode {
TElemType data;
BiTNode *lchild, *rchild;
} BiTNode, *BiTree;
可用隊列類型Queue的相關定義:
typedef BiTree QElemType; // 設隊列元素為二叉樹的指針類型
Status InitQueue(Queue &Q);
Status EnQueue(Queue &Q, QElemType e);
Status DeQueue(Queue &Q, QElemType &e);
Status GetHead(Queue Q, QElemType &e);
Status QueueEmpty(Queue Q);
提示:可將遍歷元素的值(字符)依次置入ss,并最后以'\0'結尾。
也可以用下列字符串函數產生ss:
int sprintf(char *buffer, char *format [, argument, ...]);
char *strcat(char *dest, char *src);
void LevelOrder(BiTree bt, char *ss)
/* travel BiTree bt by level, Return result by ss. */
{
Queue Q;
int i=0;
struct BiTNode *p;
InitQueue(Q); //建立工作隊列
EnQueue(Q,bt);
if(!bt) ss[0]='\0';
else{
while(!QueueEmpty(Q))
{
DeQueue(Q,p);
ss[i]=p->data;
i++;
if(p->lchild) EnQueue(Q,p->lchild);
if(p->rchild) EnQueue(Q,p->rchild);
}
ss[i]='\0';
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -