mysql二叉树怎么建,数据结构中二叉树怎么建树

mysql如何创建二叉树

在二叉树中有一种平衡二叉树,通过平衡算法可以让二叉树两边的节点平均分布,这样就能让所有的索引查找都在一个近似的时间内完成。而MySQL这类数据库采用了二叉树的升级版B+Tree的形式,每个节点有三个支叶,不过其算法原理仍然是平衡树的原理。

创新互联公司主营汨罗网站建设的网络公司,主营网站建设方案,成都app软件开发,汨罗h5重庆小程序开发搭建,汨罗网站营销推广欢迎汨罗等地区企业咨询

二叉树的建立及基本操作

楼主你好

具体代码如下:

#includestdio.h

#includestdlib.h

#define MAX 40

typedef struct node//二叉树结点定义

{

char data;

struct node *lChild;//左孩子

struct node *rChild;//右孩子

}BTNode;

//*************************************二叉树操作***************************************

void Initial_BT(BTNode * b)

{

b=NULL;

}

void Creat_BT(BTNode * b)//创建二叉树

{

BTNode *St[MAX];//用栈辅助实现二叉树的建立

BTNode *p=NULL;

b=NULL;

int top=-1;//栈指针

int k;//k为左右孩子标示(1为左孩子、2为右孩子)

char ch;

printf("Enter the binary tree:\n");

ch=getchar();

while(ch!='\n')

{

switch(ch)

{

case '('://左孩子

top++;

St[top]=p;

k=1;

break;

case ')':

top--;

break;

case ','://右孩子

k=2;

break;

default:

p=(BTNode *)malloc(sizeof(BTNode));

p-data=ch;

p-lChild=p-rChild=NULL;

if(!b)//如果为根节点

b=p;

else

{

switch(k)

{

case 1:

St[top]-lChild=p;

break;

case 2:

St[top]-rChild=p;

break;

}

}

}

ch=getchar();//继续读入数据

}

}

void InOrder(BTNode *b)//中序遍历

{

if(b)

{

InOrder(b-lChild);

printf("%c",b-data);

InOrder(b-rChild);

}

}

void PostOrder(BTNode *b)//后序遍历

{

if(b)

{

PostOrder(b-lChild);

PostOrder(b-rChild);

printf("%c",b-data);

}

}

int Leaf_Sum(BTNode *b)

{

if(!b)

return 0;

else if(b-lChild == NULL b-rChild == NULL)

return 1;

else

return Leaf_Sum(b-lChild)+Leaf_Sum(b-rChild);

}

void Start()

{

BTNode *b;//二叉树

char choice;

b=(BTNode *)malloc(sizeof(BTNode));

Initial_BT(b);

GOTO:system("cls");

printf("\t\t1.创建二叉树.\n"

"\t\t2.中序遍历.\n"

"\t\t3.后序遍历.\n"

"\t\t4.叶子结点个数.\n"

"\t\t5.退出.\n");

printf("输入你的选择:");

GOTO1:choice=getchar();

switch(choice)

{

case '1':

getchar();

Creat_BT(b);

system("pause");

goto GOTO;

case '2':

InOrder(b);

printf("\n");

system("pause");

getchar();

goto GOTO;

case '3':

PostOrder(b);

printf("\n");

system("pause");

getchar();

goto GOTO;

case '4':

printf("共有%d个叶子结点\n",Leaf_Sum(b));

system("pause");

getchar();

goto GOTO;

case '5':

system("pause");

break;

default:

printf("输入错误!\n"

"重新输入:");

goto GOTO1;

}

}

int main()

{

Start();

return 0;

}

希望能帮助你哈

如何建立二叉树

1.建立二叉树

2.为了直观的输出树,那么可以选择广度遍历。查查书应该有。

3.深度的话我这刚好有两个函数

法1:

templateclass T

int treeT::tree_level(tree_nodeT *root)//利用递归:

{

if(root==NULL)

return 0;

else

{

int l_level=tree_level(root-rchild);//记录左子树的层数

int r_level=tree_level(root-rchild);//记录右子树的层数

return l_levelr_level?l_level+1:r_level+1;//选择左右层数较大的一个+1返回

}

}

法2:

templateclass T

void treeT::tree_level(tree_nodeT *root,int level,int deth)//

{//用level记录当前的层数

if(root!=NULL)

{

if(leveldeth)

{

deth=level;//deth和当前层数level比较,取较大值

}

tree_level(root-lchild,level+1,deth);//level+1看其左子树

tree_level(root-rchild,level+1,deth);//level+1看其右子树

}

数据结构 创建二叉树

//这个题目挺有意思的,很喜欢,你看看我这个咋样啊?

#includestdio.h

#includemalloc.h

typedef

char

elemtype

;

typedef

struct

node

{

elemtype

data

;

struct

node

*lchild

;

struct

node

*rchild

;

}btree,*pbtree

;

//先序创建树

void

createbtree(pbtree

*t)

//此处参数应该用指针的指针,应给它要改变指向二叉树根的那个指针

{

char

ch

;

ch=getchar();

getchar();

//得到回车按那个字符

if(ch

=='

')

//输入空字符时要打空格

{

(*t)

=

null

;

return

;

}

else

{

if(

!(

(*t)

=

(pbtree)

malloc(sizeof(btree))

)

)

return

;

(*t)-data

=

ch

;

createbtree(

(*t)-lchild

);

createbtree(

(*t)-rchild

);

}

}

void

btreeprint(btree

*tr,int

n)

//逆时针旋转90°打印二叉树,n为缩进层数,初始值为0

{

int

i;

if(tr

==

null)

return;

btreeprint(tr-rchild,n+1);

for(i

=

0;in;i++)

printf("

");

if(n

=

0)

{

printf("--");

printf("%c\n",tr-data);

}

btreeprint(tr-lchild,n+1);

}

void

main()

{

pbtree

btree

;

createbtree(btree);

btreeprint(btree,0);

}

输入举例:建立以a为根b、c分别为左右子树的二叉树!输入格式为:

a

回车!

b

回车!

空格

回车!

空格

回车!

c

回车!

空格

回车!

空格

回车!


当前名称:mysql二叉树怎么建,数据结构中二叉树怎么建树
文章链接:http://azwzsj.com/article/dscdpjp.html