二叉查詢樹的映象

2021-07-02 03:15:35 字數 492 閱讀 6318

題目:輸入一顆二元查詢樹,將該樹轉換為它的映象,即在轉換後的二元查詢樹中,左子樹的結點都大於

右子樹的結點。用遞迴和迴圈兩種方法完成樹的映象轉換。

例如輸入:

8/ \

6 10

/\ /\

5 7 9 11

輸出:8

/ \10 6

/\ /\

11 9 7 5

思路:這也是乙個遞迴的題目,對於當前節點,如果不是null節點或者葉子節點,那麼只需要交換左右子節點即可。這樣再次遞迴呼叫左右子樹。

void convertmirror(bintree* root)

當然也可以不使用遞迴,使用棧空間來輔助,從棧頂取出節點,交換左右節點,如果左右節點不為空,壓入棧

void convertmirrornoiter(bintree* root)

}

C語言 二叉查詢樹映象

題目 輸入一顆二元查詢樹,將該樹轉換為它的映象,即在轉換後的二元查詢樹中,左子樹的結點都大於右子樹的結點。用遞迴和迴圈兩種方法完成樹的映象轉換。例如輸入 8 610 57911 輸出 8 10 6 119 75 typedef struct bstreenodebst void mirrorbst ...

映象二叉樹

映象二叉樹與二叉樹的區別是左右孩子對於根節點的相對大小剛好相反不用建立映象樹,通過對原樹的映象便歷,即可得到所需的東西。後序 樹 lr根,映象 rl根。如果創立映象二叉樹,insert 改一下即可,這樣可以把preordermirror 等去掉。對於遍歷後的排序放到vector陣列裡便於比較,而且進...

映象二叉樹

題目描述 操作給定的二叉樹,將其變換為源二叉樹的映象。思路 1 獲取源二叉樹的映象,將源二叉樹的左右子樹交換即可 2 主要步驟 若二叉樹為空,直接返回 若二叉樹不為空,交換其左右子樹 遞迴的將二叉樹的其他結點進行交換 public class treenode public class soluti...