二叉搜索树:其各个节点的关键字码必须是唯一的;若某结点左子树非空,则左子树上的所有节点的值均小于该结点的关键字码,而其右子树上的所有节点的值均大于该结点的关键字码。所以,按照中序周游整个二叉树的可以得到一个由小到大的有序排列。
通过不断读取数组中的数据而插入生成的二叉搜索树的代码如下:
/* 二叉搜索树 - 通过不断插入建立一棵二叉搜索树 */
#include "stdafx.h"
#include <iostream>
#include <malloc.h>
using namespace std;
const int MaxSize = 5;
typedef int ElementType;
typedef struct bitnode
{
ElementType data;
struct bitnode *left, *right;
} bitnode, *bitree; //bitree为指向struct bitnode这种结构的指针
bitree CreateByInsert(bitree T, int item); //通过插入建立二叉搜索树
void InOrder(bitree T); //中序递归遍历二叉搜索树、其结果一定为递增序列
bitree FreeTree(bitree T); //释放二叉搜索树的内存空间
//通过插入建立二叉搜索树
bitree CreateByInsert(bitree T, int item)
{
if (T == NULL) //树为空,无根节点的情况,则分配一块空的bitnode内存,建立根节点
{
T