輸入一顆二元查詢樹,將該樹轉換為它的映象

2021-08-15 15:17:43 字數 724 閱讀 6273

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

例如給定下列的輸入:

然後有如下的輸出:

解法一:遞迴

首先交換根節點8的左右子樹,10,6的左右子樹順序不變,然後交換根節點6的左右子節點,直到左右子節點為空為止。

**:

bstreenode*digui(bstreenode*proot)

return proot;

}

解法二:迴圈

我們需要乙個輔助棧

每次取棧頂元素交換左右子女,然後將左右子女分別壓入輔助棧,當棧中元素為空時,結束迴圈。

應用棧的原理,首先把8壓棧。然後開始操作棧,如果棧不空,就彈出棧中的元素,並交換元素的左右兩個子節點。

如果這兩個節點分別處理,如果不空,然後壓入棧中,壓棧操作完後,再對棧進行操作。

(本質也是遞迴)

**如下:

bstreenode*xunhuan(bstreenode*proot)

} return proot;

}

輸入一顆二元查詢樹,將該樹轉換為它的映象

二叉樹 一 題目 輸入一顆二元查詢樹,將該樹轉換為它的映象,即在轉換後的二元查詢樹中,左子樹的結點都大於右子樹的結點。用遞迴和迴圈兩種方法完成樹的映象轉換。例如輸入 8 6 10 5 7 9 11 輸出 8 10 6 11 9 7 5 定義二元查詢樹的結點為 struct bstreenode a ...

15 輸入一顆二元查詢樹,將該樹轉換為它的映象

題目 輸入一顆二元查詢樹,將該樹轉換為它的映象,即在轉換後的二元查詢樹中,左子樹的結點都大於右子樹的結點。用遞迴和迴圈兩種方法完成樹的映象轉換。例如輸入 8 6 10 5 7 9 11 輸出 8 10 6 11 9 7 5 定義二元查詢樹的結點為 struct bstreenode a node i...

13 輸入一顆二元查詢樹,將該樹轉換為它的映象

題目 輸入一顆二元查詢樹,將該樹轉換為它的映象,即在轉換後的二元查詢樹中,左子樹的結點都大於右子樹的結點。用遞迴和迴圈兩種方法完成樹的映象轉換。例如輸入 8 6 10 5 7 9 11 輸出 8 10 6 11 9 7 5 定義二元查詢樹的結點為 struct bstreenode a node i...