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

2021-06-10 06:12:48 字數 1512 閱讀 7414

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

即在轉換後的二元查詢樹中,左子樹的結點都大於右子樹的結點。

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

例如輸入:

8/ /

6 10

// //

5 7 9 11

輸出:8

/ /10 6

// //

11 9 7 5

定義二元查詢樹的結點為:

struct bstreenode // a node in the binary search tree (bst);

遞迴:用遞迴的方式,就是遍歷每個節點,然後交換每個節點的左右孩子!

#include using namespace std;

struct bstreenode

;void insert(bstreenode** root,int n); //樹的插入操作

void inversive(bstreenode* root); //樹的反轉

int main()

void insert(bstreenode** root,int n)

else

else if (current->m_nvalue>n&¤t->m_pleft!=null)

else if (current->m_nvaluem_pright==null)

else if (current->m_nvaluem_pright!=null)

} }}

bstreenode::bstreenode(int value)

bstreenode::bstreenode()

{}void inversive(bstreenode* root)

}

迴圈:這裡要用到隊裡,先將節點的左右孩子入佇列,然後交換左右孩子,知道隊列為空!

#include #include using namespace std;

struct bstreenode

;void insert(bstreenode** root,int n); //樹的插入操作

void inversive(bstreenode* root); //樹的反轉

int main()

void insert(bstreenode** root,int n)

else

else if (current->m_nvalue>n&¤t->m_pleft!=null)

else if (current->m_nvaluem_pright==null)

else if (current->m_nvaluem_pright!=null)

} }}

bstreenode::bstreenode(int value)

bstreenode::bstreenode()

{}void inversive(bstreenode* root)

}

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

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

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

輸入一顆二元查詢樹,將該樹轉換為它的映象,即在轉換後的二元查詢樹中,左子樹的結點都大於右子樹的結點。例如給定下列的輸入 然後有如下的輸出 解法一 遞迴 首先交換根節點8的左右子樹,10,6的左右子樹順序不變,然後交換根節點6的左右子節點,直到左右子節點為空為止。bstreenode digui bs...

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

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