演算法導論10 4有根樹的表示習題

2021-07-01 21:13:30 字數 1024 閱讀 6325

10.4-2

//偽**

x=t.root

tree_key_print(x)

print x.key;

if x.left!=nil

tree_key_print(x.left)

if x.right!= nil

tree_key_print(x.right);

end

10.4-3

思路:(前序遍歷思想)初始時把根元素壓入棧,然後每次彈出乙個元素並列印後,必須把其子元素壓入棧,這樣樹中未列印元素要麼在棧中要麼其祖先元素在棧中,最後每個元素都會被列印。

//偽**

tree_key_print'(t,s)//s位空棧

root = t.root;

push(s,root);

while(s.head != nil)

x=pop(s);

print x.key

if(x.left != nil)

push(s,x.left)

if(x.right != nil)

push(s,x,right)

end

10.4-4

//偽**

x=t.root

tree_key_print(x)

print x.key

if x.left != nil

tree_key_print(x.left)

while(x.right != nil)

tree_key_print(x.right)

x=x.right

10.4-6

每個節點儲存2個指標和乙個布林值,1個指標指向left-child,布林值為1則表示right-sibling是nil,是兄弟元素中最後乙個,第二個指標指向父元素。如果布林值為0,另乙個指標指向right-sibling.找到父節點或任乙個孩子節點都是與孩子數成線性關係。

《演算法導論》筆記 第10章 10 4 有根樹的表示

用二叉數表示有多個子女的樹 left x 表示最左邊的兒子,right x 右邊的兄弟。10.4 1 畫出由下列域表示的 根在下標6處的二叉樹。10.4 2 請寫出乙個o n 時間的遞迴過程,在給定含n個結點的二叉樹後,它可以將樹中的每個結點的關鍵字輸出來。void dfs int x 10.4 3...

演算法導論程式23 有根樹的表示(Python)

用鏈式資料結構表示有根樹的問題。樹的結點用物件表示,每個結點都含有乙個關鍵字key。二叉樹 屬性p 指標指向父結點 left 指向左孩子 right 指向右孩子 如果x.p nil,則x是根結點 如果結點x沒有左孩子,則x.left nil。右孩子的情況類似。屬性t.root指向整棵樹t的根結點。如...

左孩子右兄弟表示法的任意有根樹的遍歷

演算法導論 p.248 10.4 4題目描述 對於乙個含n個結點的任意有根樹,寫出乙個o n 時間的過程,輸出其所有關鍵字,該樹以左孩子右兄弟表示法儲存。與二叉樹的遍歷類似 class tree def init self,val self.val val self.left child none ...