各位大大好,以下程式碼是"資料結構"->樹狀結構的插入節點,請問if(T->rthread==POINTER)那一行和while(tmp->lchild==POINTER)有什麼不一樣呢?為什麼不能寫if(T->rchild==POINTER)或while(tmp->lthread==THREAD)請問能不能教教我?
*此樹的前序:"A S B T tmp C"
*此樹的中序:"B S T tmp A C"
複製內容到剪貼板
代碼:
#define THREAD 1
#define POINTER 0
threaded_pointer tmp;
T->rthread=S->rthread;
T->rchild=S->rchild;
T->lthread=THREAD;
T->lchild=S;
S->rthread=POINTER;
S-rchild=T;
if(T->rthread==POINTER){ /*若新節點T不是樹葉*/
tmp=T->rchild; /*令節點tmp移往新節點T的右子樹*/
while(tmp->lchild==POINTER) /*沿著左鏈結移動,直到找到有左引線的節點*/
tmp=tmp->lchild;
tmp->lchild=T; /*令該節點的左鏈結指向新節點T*/
}
[
本帖最後由 bobo0836 於 2011-12-3 09:00 編輯 ]