ADT 樹(shù)(tree)
Data
? ? 樹(shù)是由一個(gè)根結(jié)點(diǎn)和若干棵子樹(shù)構(gòu)成雄驹。樹(shù)中結(jié)點(diǎn)具有相同數(shù)據(jù)類型及層次關(guān)系刻蚯。
Operation
? ? InitTree(*T):? ? ? ? ? ? ? 構(gòu)造空樹(shù)T留夜。
? ? DestroyTree(*T):? ? ? ? ? ? 銷毀樹(shù)T真椿。
? ? CreateTree(*T, definition): 按definition中給出樹(shù)的定義來(lái)構(gòu)造樹(shù)娜遵。
? ? ClearTree(*T):? ? ? ? ? ? ? 若樹(shù)T存在丽声,則將樹(shù)T清為空樹(shù)礁蔗。
? ? TreeEmpty(T):? ? ? ? ? ? ? 若T為空樹(shù),返回true恒序,否則返回false瘦麸。
? ? TreeDepth(T):? ? ? ? ? ? ? 返回T的深度。
? ? Root(T):? ? ? ? ? ? ? ? ? ? 返回T的根結(jié)點(diǎn)歧胁。
? ? Value(T, cur_e):? ? ? ? ? ? cur_e是樹(shù)T中一個(gè)結(jié)點(diǎn)滋饲,返回此結(jié)點(diǎn)的值。
? ? Assign(T, cur_e, value):? ? 給樹(shù)T的結(jié)點(diǎn)cur_e賦值為value喊巍。
? ? Parent(T, cur_e):? ? ? ? ? 若cur_e是樹(shù)T的非根結(jié)點(diǎn)屠缭,則返回它的雙親,否則返回空崭参。
? ? LeftChild(T, cur_e):? ? ? ? 若cur_e是樹(shù)T的非葉結(jié)點(diǎn)呵曹,則返回它的最左孩子,否則返回空。
? ? RightSibling(T, cur_e):? ? 若cur_e有右兄弟奄喂,則返回它的右兄弟铐殃,否則返回空。
? ? InsertChild(*T, *p, i, c):? 其中p指向樹(shù)T的某個(gè)結(jié)點(diǎn)跨新,i為所指結(jié)點(diǎn)p的度加上1富腊,
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 非空樹(shù)c與T不相交,操作結(jié)果為插入c為樹(shù)T中p指結(jié)點(diǎn)的第i棵子樹(shù)域帐。
? ? DeleteChild(*T, *p, i):? ? 其中p指向樹(shù)T的某個(gè)結(jié)點(diǎn)赘被,i為所指結(jié)點(diǎn)p的度,
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 操作結(jié)果為刪除T中p所指結(jié)點(diǎn)的第i棵子樹(shù)肖揣。
endADT