樹相關的額術語:
根:樹的最頂層的元素,有且只有乙個。
父(雙親):指的是元素的上一層元素
子:指的是下一層元素
葉子結點:沒有子節點的元素,一般在樹的最底層
兄弟結點:具有同乙個父節點的元素
度:子的數量
層度:樹的層數
密度:樹的元素個數
結點:乙個元素就是乙個結點。
普通樹:子的個數不確定
普通樹的儲存:
順序儲存:
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時,如果沒有後續在堆記憶體上的操作了,是可以越界的。例如如 這樣就...