以下為用c語言實現的二叉排序樹,包含了樹的建立,銷毀,新增,刪除,修改,前、中、後、層序遍歷,深度,密度。
#include #include #include #define type int
typedef struct node
node;
// 建立結點
node* creat_node(type data);
// 新增
bool add_tree(node* root,type data);
// 刪除
bool del_tree(node* root,type data);
// 訪問
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()
printf("%d\n",high_tree(tree)); // 樹的高度
printf("%d\n",density_tree(tree)); // 樹的密度
}// 建立結點
node* creat_node(type data)
void _add_tree(treenode** root,treenode* treenode)
if((*root)->data > treenode->data) // 如果要新增的節點的資料小於根節點,則對節點的左子樹進行遞迴
_add_tree(&(*root)->left,treenode);
else // 否則將節點的右子樹進行遞迴
_add_tree(&(*root)->right,treenode);
}// 新增
void add_tree(treenode** root,type_t data)
// 刪除
bool del_tree(treenode** root,type_t data)
else if((*root)->data > data) // 如果要新增的資料小於根節點的資料,則將根節點的左子樹遞迴
return del_tree(&(*root)->left,data);
else // 如果要新增的資料大於根節點的資料,則將根節點的右子樹遞迴
return del_tree(&(*root)->right,data);
}void _access_tree(treenode* root,size_t i,type_t* p,size_t* indexp)
*indexp += 1;
_access_tree(root->right,i,p,indexp); // 遞迴右子樹
}// 訪問
bool access_tree(treenode* root,size_t i,type_t* p) // root為要訪問的樹的根節點,i為要訪問的第幾個節點,p用來返回節點的資料
// 前序
void prev_show(node* root)
// 中序
void in_show(node* root)
// 後序
void post_show(node* root)
// 層序(需要借助佇列來完成)
void level_show(treenode* root)
printf("\n");
}// 高度
size_t high_tree(node* root)
// 密度
size_t density_tree(node* root)
C語言實現二叉樹
1.c語言實現二叉樹中節點間最大距離 includetypedef struct treenode treenode 我們可以將所有的結點的左右子樹的高度和計算一下,然後取出最大值,就是最遠的距離。int getmaxdistance treenode root,int maxdistance in...
重建二叉樹 C語言實現
主要根據程式設計之美中利用前序與中序遍歷實現二叉樹的重構。其中對於前序遍歷中的每乙個節點都是當前子樹的根節點這一理論來對中序遍歷進行劃分。並且也實現了根據中序遍歷與後序遍歷實現二叉樹的重構,其中對於後序遍歷主要要注意其中後序遍歷的最後乙個元素表示的是根節點這一思想來實現。其中對於利用前序遍歷與中序遍...
C語言實現構建二叉樹
include include include typedef int elemtype typedef struct btreebt,b tree 增加新節點 brief insert node param root param nodevalue return b tree insert nod...