二叉查找树

来源:互联网 发布:矩阵与转置矩阵相乘 编辑:程序博客网 时间:2024/05/21 19:37
题目:二叉查找树结构为: 
typedef struct BSTree 

    struct BSTree *left, *right; 
    int item; 
} BSTree; 
实现以下操作: 
1)  创建一个新的 BST 结点。 
2)  在 BST 中查找一个指定的元素。 

3)  向 BST 中插入元素。 

代码:

#include <stdio.h>#include <stdlib.h>typedef struct BSTree {     struct BSTree *left, *right;     int item; } BSTree, *BSTreePtr; BSTreePtr insert(BSTreePtr root,int data){BSTreePtr ptr = root;BSTreePtr tempnode;BSTreePtr newnode = (BSTreePtr)malloc(sizeof(BSTree));newnode->item = data;newnode->left = NULL;newnode->right = NULL;if(!ptr)return newnode;while (ptr){tempnode = ptr;if (data <= ptr->item)ptr = ptr->left;elseptr = ptr->right;}if (data <= tempnode->item)tempnode->left = newnode;elsetempnode->right = newnode;return root;}BSTreePtr creatTree(void){int data;BSTreePtr root = NULL;printf("请输入要插入的结点:(以0作为结束)\n");scanf("%d",&data);while (data){root = insert(root,data);scanf("%d",&data);}return root;}int find(BSTreePtr root,int m){BSTreePtr ptr = root;if (!ptr)return 0;while (ptr){if (m == ptr->item)return 1;else if (m < ptr->item)ptr = ptr->left;elseptr = ptr->right;}return 0;}int main(void){int m,res;BSTreePtr root = NULL;root = creatTree();printf("请输入想查找的元素:\n");scanf("%d",&m);res = find(root,m);if (res)printf("找到元素%d\n",m);elseprintf("没找到元素%d\n",m);return 0;}
通过这次的编程题是我受益匪浅,让我能更深入的理解指针操作和指针变量的赋值,比如你想改变某一指针变量最好是通过其地址进行操作,必要时还要用到二级指针,因为单纯变量的改变是局部的,而地址中的变量的改变是全局的。

0 0
原创粉丝点击