> 文档中心 > 二叉排序树

二叉排序树

目录:

    • 实现的操作:
    • 定义结构体:
    • 创建二叉排序树:
    • 二叉排序树查找:
    • 函数
    • 测试结果

实现的操作:

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 ;}

测试结果:

在这里插入图片描述
声明:此文章为学习笔记,如有侵权请联系删除。