二叉树搜索基本概念
二叉搜索树,以这样一种方式构成,在任何层、任何节点的直接左节点的存储值总是小于或等于其节点本身的值。所以节点的左子树总包含那些存储值小于或等于它的节点。同理,节点的右子树总包含那些存储值大于或等于它的节点。
下述代码从根节点开始,并将当前节点的数据部分与正在插入的新数据结点进行了比较。如果新节点的数据小于当前节点的数据值,通过左子节点指针进行**递归调用相同函数**;否则,通过右子节点**递归调用相同函数**。
#include<stdio.h>
#include<stdlib.h>
# define N sizeof(struct point)
struct point
{
int date;
struct point* left;
struct point* right;
};
struct point* creatnode(int data)
{
struct point* p;
p = (struct point*)malloc(N);
p->date = data;
p->left = NULL;
p->right = NULL;
return p;
}
void insertnode(struct point** root, struct point* n)
{
struct point* temp = *root;
if (temp == NULL)
{
*root = n;
}
else
{
if (n->date < temp->date)
insertnode(&temp->left, n);
else
insertnode(&temp->right, n);
}
}
int main()
{
struct point* root = NULL;
for (int i = 0; i < 5; i++)
insertnode(&root, creatnode(i));
return 0;
}