查看單個文章
舊 2011-12-02, 05:20 PM   #1
bobo0836
註冊會員
榮譽勳章

勳章總數0
UID - 347578
在線等級: 級別:0 | 在線時長:2小時 | 升級還需:3小時
註冊日期: 2011-07-12
文章: 6
精華: 0
現金: 8 金幣
資產: 8 金幣
預設 C語言 資料結構 樹狀結構

各位大大好,以下程式碼是"資料結構"->樹狀結構的插入節點,請問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*/

}

此帖於 2011-12-03 09:02 AM 被 bobo0836 編輯.
bobo0836 目前離線  
送花文章: 2, 收花文章: 0 篇, 收花: 0 次
回覆時引用此帖