?? 習題-36.c
字號:
//本程序只給出了算法思想
//讀者可以自己完善本程序
typedef struct {
int data;
PBTNode *lchild;
PBTNode *rchild;
PBTNode *parent;
} PBTNode,PBitree; //有雙親指針域的二叉樹結點類型
void Inorder_Nonrecursive(PBitree T)//不設棧非遞歸遍歷有雙親指針的二叉樹
{
p=T;
while(p->lchild)
p=p->lchild; //向左走到盡頭
while(p)
{
visit(p);
if(p->rchild) //尋找中序后繼:當有右子樹時
{
p=p->rchild;
while(p->lchild) p=p->lchild; //后繼就是在右子樹中向左走到盡頭
}
else if(p->parent->lchild==p)
p=p->parent; //當自己是雙親的左孩子時后繼就是雙親
else
{
p=p->parent;
while(p->parent&&p->parent->rchild==p)
p=p->parent;
p=p->parent;
}
//當自己是雙親的右孩子時后繼就是向上返回直到遇到自己是在其左子樹中的祖先
}//while
}//Inorder_Nonrecursive
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -