程序名称: 二叉树平衡因子
程序功能: 随机生成用户要求个数的整数,生成二叉树(无重复),
可以进行生成、遍历、查找二叉树,而且进行动态的查找,
如果没有找到节点就把这个值接到树上
能够显示节点的产生顺序、平衡因子(失败),节点值
*/
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
//自引用结构
struct treeNode
{
int data; //节点值
int balance; //平衡因子
int order; //生成顺序
struct treeNode *left; //指向左子树的指针
struct treeNode *right; //指向右子树的指针
struct treeNode *father;
}; /*结构定义END */
typedef struct treeNode TreeNode;
typedef TreeNode * TreeNodePtr;
/*函数原型*/
void insertNode(TreeNodePtr &rootPtr,int value,int order); //插入节点
void inOrder(TreeNodePtr rootPtr); //中序遍历
int instructions(); //菜单
void search(TreeNodePtr &rootPtr,int value,int n); //查找
//----------------------------------------------------------------------------------
/*主函数*/
void main()
{
int item; //要操作的数据
int choices; //存储随机制的变量
int i; //循环计数器
int n; //节点个数
TreeNodePtr rootPtr=NULL; //树在开始的时候为空
while(choices=instructions())
{
switch(choices)
{
case 1:
rootPtr=NULL;
printf("输入要生成二叉树的节点数>>");
scanf("%d",&n);
if(n<=0)
{
printf("输入节点数必须大于等于1\n");
break;
}
srand(time(NULL));
for(i=1;i<=n;i++)
{
item=rand()%(10*n);