小河學習日記之樹篇

2021-09-25 21:08:55 字數 2380 閱讀 1450

樹相關的額術語:

根:樹的最頂層的元素,有且只有乙個。

父(雙親):指的是元素的上一層元素

子:指的是下一層元素

葉子結點:沒有子節點的元素,一般在樹的最底層

兄弟結點:具有同乙個父節點的元素

度:子的數量

層度:樹的層數

密度:樹的元素個數

結點:乙個元素就是乙個結點。

普通樹:子的個數不確定

普通樹的儲存:

順序儲存:

1.對結點儲存順序沒有要求

2.從上到下,從左到右儲存

鏈式儲存:

二叉樹:子最多只有兩個

普通二叉樹:對二叉樹的結沒有位置和數量上的要求

完全二叉樹:除了最後一層,其他層的結點都是2的層數-1次方,最後一層從左到右儲存

滿二叉樹:每一層的節點數量都是2的層數-1次方

有序二叉樹:所有的左子結點都小於根節點,所有的右子結點都大於根節點

平衡二叉樹:有序二叉樹的左右子樹高度相差不超過一

相關術語:

遍歷:前序(根,左,右),中序(左,根,右),後序(左,右,根),層序(從上到下,從左到 右);

根據遍歷順序構建二叉樹:

前,中,後:前中(以知前序和中序構建二叉樹),後中(以知後序和中序構建二叉樹)

層序:空位置用#表示

#include

#include

#include

#include

#include

#define type int

#define nil 0

typedef struct node

node;

//建立

node* creat_node(type data);

//新增

bool add_tree(node* root,type data);

//刪除

bool del_tree(node* root,type data);

//修改

bool modify_tree(node* root,type old,type new);

//訪問

bool access_tree(node* root,size_t i,type* p);

//前序

void prev_show(node* root);

//中序

void in_show(node* root);

//後序

void post_show(node* root);

//層序

void level_show(node* root);

//高度

size_t high_tree(node* root);

//密度

size_t density_tree(node* root);

int main()

prev_show(tree);

printf("\n");

in_show(tree);

printf("\n");

post_show(tree);

printf("\n");

access_tree(tree,6,null);

}//建立

node* creat_node(type data)

return add_tree(root->left,data);

}else

return add_tree(root->right,data);}}

//刪除,如果根節點允許被刪除,需要使用二級指標

bool del_tree(node* root,type data)

return del_tree(root->left,data);

}if(data>root->right->data)

return del_tree(root->left,data);}}

//訪問

bool access_tree(node* root,size_t i,type* p)

index++;

bool rflag=access_tree(root->right,i,p);

return lflag||rflag;

}//前序

void prev_show(node* root)

//中序

void in_show(node* root)

//後序

void post_show(node* root)

//層序

void level_show(node* root);

//高度

size_t high_tree(node* root)

//密度

size_t density_tree(node* root)

小河學習日記

第一篇 void void 在c語言中是32個關鍵字其中的乙個。與char,short,int,long,float,double分為一類。都是用來修飾變數和函式的。一.void void和char一樣只有乙個位元組。void 的意思是 無型別 void一般用在函式名之前 void 函式名 引數 這...

小河學習日記 網路通訊基礎知識篇

二 網路通訊的基本概念 1 tcp和udp的區別 tcp 傳輸控制協議,面向連線的服務 打 安全 可靠 三次握手 響應 重傳 四次揮手 速度相對較慢,一般應用在對安全性 完整性有嚴格要求的場景 ftp smtp http。三次握手 a要知道,a能到b,b也能到a。b要也要知道,a能到b,b也能到a。...

小河學習日記 C與C 不同之處出

c與c 的不同之處 只講區別,c 有而c沒有的,請聽下回分解 一.記憶體管理 1.c使用的時malloc free,malloc再分配記憶體時是一頁一頁的分配的,當使用malloc時作業系統會直接批發32頁記憶體,所以使用malloc時,如果沒有後續在堆記憶體上的操作了,是可以越界的。例如如 這樣就...