DS二叉排序樹之建立和插入

2021-09-02 01:40:38 字數 1549 閱讀 4782

題目描述

給出乙個資料序列,建立二叉排序樹,並實現插入功能

對二叉排序樹進行中序遍歷,可以得到有序的資料序列

輸入

第一行輸入

t,表示有

t個資料序列

第二行輸入

n,表示首個序列包含

n個資料

第三行輸入

n個資料,都是自然數且互不相同,資料之間用空格隔開

第四行輸入

m,表示要插入

m個資料

從第五行起,輸入

m行,每行乙個要插入的資料,都是自然數且和前面的資料不等

以此類推輸入下乙個示例

輸出

第一行輸出有序的資料序列,對二叉排序樹進行中序遍歷可以得到

從第二行起,輸出插入第

m個資料後的有序序列,輸出m行

以此類推輸出下乙個示例的結果

樣例輸入1

6 22 33 55 66 11 44 3

77 50

10樣例輸出

11 22 33 44 55 66

11 22 33 44 55 66 77

11 22 33 44 50 55 66 77

10 11 22 33 44 50 55 66 77

插入實現:

temp初始化為根結點

每次判斷要插入的值和結點temp的值的大小

如果比temp大,且temp的右孩子為空,那麼直接插在temp的右邊

如果比temp大,且temp的右孩子不為空,那麼temp=temp->rightchild,繼續判斷

如果比temp小,且temp的左孩子為空,那麼直接插在temp的左邊

如果比temp小,且temp的左孩子不為空,那麼temp=temp->leftchild,繼續判斷

建立實現:

將第乙個數作為根結點,將後面的數依次插入到排序樹中即可

**:

#include #include #include using namespace std;

class bstnode;

~bstnode(){};

};class bst;

~bst(){};

void create();

void inorder(bstnode *t);

void insert();

};void bst::create() //建立排序樹,這裡為了加快速度,採用的是不呼叫insert函式,而將insert函式的**內嵌在建立的**中

}else}}

}}void bst::inorder(bstnode *t)

void bst::insert() //插入操作

}else}}

}int main()

}}

DS二叉排序樹之建立和插入

給出乙個資料序列,建立二叉排序樹,並實現插入功能 對二叉排序樹進行中序遍歷,可以得到有序的資料序列 第一行輸入t,表示有t個資料序列 第二行輸入n,表示首個序列包含n個資料 第三行輸入n個資料,都是自然數且互不相同,資料之間用空格隔開 第四行輸入m,表示要插入m個資料 從第五行起,輸入m行,每行乙個...

DS二叉排序樹之刪除

給出乙個資料序列,建立二叉排序樹,並實現刪除功能 對二叉排序樹進行中序遍歷,可以得到有序的資料序列 第一行輸入t,表示有t個資料序列 第二行輸入n,表示首個序列包含n個資料 第三行輸入n個資料,都是自然數且互不相同,資料之間用空格隔開 第四行輸入m,表示要刪除m個資料 從第五行起,輸入m行,每行乙個...

DS二叉排序樹之查詢

題目描述 給出乙個資料序列,建立二叉排序樹,並實現查詢功能 對二叉排序樹進行中序遍歷,可以得到有序的資料序列 輸入第一行輸入t,表示有t個資料序列 第二行輸入n,表示首個序列包含n個資料 第三行輸入n個資料,都是自然數且互不相同,資料之間用空格隔開 第四行輸入m,表示要查詢m個資料 從第五行起,輸入...