二叉排序树
目录:
实现的操作:
TreeNode* BST_tree(TreeNode *T,int key); //二叉排序树查找
void BST_insert(TreeNode **T,int key); //创建二叉排序树
void PreOrder(TreeNode *T); //遍历
定义结构体:
typedef struct TreeNode{ char val; //存储数据 struct TreeNode *lchild; //左孩子 struct TreeNode *rchild; //右孩子}TreeNode;
创建二叉排序树:
void BST_insert(TreeNode **T,int key){ if(*T == NULL) { *T = (TreeNode *)malloc(sizeof(TreeNode)); (*T)->val = key; (*T)->lchild = NULL; (*T)->rchild = NULL; } else if(key == (*T)->val) { return ; } else if(key < (*T)->val) { BST_insert(&((*T)->lchild),key); } else { BST_insert(&((*T)->rchild),key); }}
二叉排序树查找:
TreeNode *BST_tree(TreeNode *T,int key){ if(T) { if(T->val == key) return T; else if(key < T->val) { return BST_tree(T->lchild,key); } else { return BST_tree(T->rchild,key); } } else { return NULL; }}
主函数:
void main(){ TreeNode *T = NULL; int nums[6] = {4,5,19,23,2,8}; for(int i = 0;i < 6;i++) { BST_insert(&T,nums[i]); } PreOrder(T); printf("\n"); TreeNode *node = BST_tree(T,23); if(node == NULL) { printf("未找到\n"); } else { printf("查找到的结果为:%d\n",node->val); } system("pause"); return ;}
测试结果:
声明:此文章为学习笔记,如有侵权请联系删除。