第十七章經典抽象資料結構二 樹(陣列實現)

2021-08-13 02:38:39 字數 977 閱讀 3459

二叉搜尋樹插入:

可以首先要判斷樹是不是為空(針對鍊錶結構是必須的,因為要分配動態記憶體),然後插入。有2種選擇,遞迴和迴圈,因為遞迴是尾部遞迴,犧牲了空間複雜度獲得了可讀性,可以轉換為迴圈。

刪除結點:

分為3種情況:

1、刪除沒有孩子的結點,直接刪除

2、刪除只有乙個孩子的結點,刪除原有結點,指向孩子結點。

3、刪除有2個孩子的結點,刪除左子樹的最大結點,把值放在當前結點。

**實現:

tree.h

#ifndef tree_h

#define tree_h

static const int array_size = 100;

static int tree[array_size];

int left_child(int i);

int right_child(int i);

int find(int i);

void insert(int i);

void delete(int i);

#endif

tree.cpp
#include "tree.h"

#include #include #include int left_child(int i)

int right_child(int i)

int find(int i)

tree[current] = i;

}void delete(int i)

else if(tree[right] == 0)

else

tree[index] = tree[pre];

tree[pre] = 0;

}}

test.cpp

#include "tree.h"

#include #include int main()

第十七章經典抽象資料型別(一)

堆疊,沒什麼太多要總結的,主要是實現問題,這裡自己實現了一下,當然從書本中吸取到的是程式 效率的提公升和assert斷言的應用判斷。的提公升在於top element的初值是0和1,對於push,pop本來就要改變的函式來說沒什麼變化,但是對於top這樣的函式,只需要返回其頂部資料,但是每一次都要 ...

第十七章 掌握網格(二)

中的網格 也可以完全用 定義網格,但通常沒有xaml定義的清晰度或有序性。gridcodedemo程式通過再現 griddemo的布局來演示 方法。要指定rowdefinition的高度和columndefinition的寬度,可以使用gridlength結構的值,通常與gridunittype列舉...

MySql的初學習 第十七章 元資料

部落格說明 除了表之外的資料都是元資料,可以分為三類 查詢結果資訊 update 或 delete語句 受影響的記錄數。資料庫和資料表的資訊 包含了資料庫及資料表的結構資訊。mysql伺服器資訊 包含了資料庫伺服器的當前狀態,版本號等。1.檢視伺服器當前狀態 show status 2.檢視mysq...