189 8069 5689

mysql二叉树怎么建 怎么创建二叉树

给了一个二叉链表,怎么建立二叉树啊

#include

创新互联公司主要业务有网站营销策划、成都网站设计、网站制作、微信公众号开发、成都小程序开发、H5网站设计、程序开发等业务。一次合作终身朋友,是我们奉行的宗旨;我们不仅仅把客户当客户,还把客户视为我们的合作伙伴,在开展业务的过程中,公司还积累了丰富的行业经验、成都全网营销资源和合作伙伴关系资源,并逐渐建立起规范的客户服务和保障体系。 

#include

using namespace std;

#define MAXSIZE 100

typedef struct BiNode

{

char data;

struct BiNode *lchild,*rchild;

}BiNode,*BiTree;

void Create(BiTree T)//用先序遍历的顺序建立二叉链表(递归方法)

{

char ch;

cinch;

if(ch=='#')

T=NULL;

else

{

T=new BiNode;

T-data=ch;

Create(T-lchild);

Create(T-rchild);

}

}

void PreOrder(BiTree T)//先序遍历二叉树(递归)

{

if(T)

{

coutdata" ";

PreOrder(T-lchild);

PreOrder(T-rchild);

}

}

void InOrder(BiTree T)//中序遍历二叉树(递归)

{

if(T)

{

InOrder(T-lchild);

coutdata" ";

InOrder(T-rchild);

}

}

void PostOrder(BiTree T)//后序遍历二叉树(递归)

{

if(T)

{

PostOrder(T-lchild);

PostOrder(T-rchild);

coutdata" ";

}

}

望采纳~~~

mysql如何创建二叉树

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

数据结构 创建二叉树

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

#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

回车!

空格

回车!

空格

回车!

如何构建二叉树

先序递归创建二叉树,并对其进行 先序、中序、后序遍历

#includemalloc.h // malloc()等

#includestdio.h // 标准输入输出头文件,包括EOF(=^Z或F6),NULL等

#includestdlib.h // atoi(),exit()

#includemath.h // 数学函数头文件,包括floor(),ceil(),abs()等

#define ClearBiTree DestroyBiTree // 清空二叉树和销毁二叉树的操作一样

typedef struct BiTNode

{

int data; // 结点的值

BiTNode *lchild,*rchild; // 左右孩子指针

}BiTNode,*BiTree;

int Nil=0; // 设整型以0为空

void visit(int e)

{ printf("%d ",e); // 以整型格式输出

}

void InitBiTree(BiTree T)

{ // 操作结果:构造空二叉树T

T=NULL;

}

void CreateBiTree(BiTree T)

{ // 算法6.4:按先序次序输入二叉树中结点的值(可为字符型或整型,在主程中定义),

// 构造二叉链表表示的二叉树T。变量Nil表示空(子)树。修改

int number;

scanf("%d",number); // 输入结点的值

if(number==Nil) // 结点的值为空

T=NULL;

else // 结点的值不为空

{ T=(BiTree)malloc(sizeof(BiTNode)); // 生成根结点

if(!T)

exit(OVERFLOW);

T-data=number; // 将值赋给T所指结点

CreateBiTree(T-lchild); // 递归构造左子树

CreateBiTree(T-rchild); // 递归构造右子树

}

}

void DestroyBiTree(BiTree T)

{ // 初始条件:二叉树T存在。操作结果:销毁二叉树T

if(T) // 非空树

{ DestroyBiTree(T-lchild); // 递归销毁左子树,如无左子树,则不执行任何操作

DestroyBiTree(T-rchild); // 递归销毁右子树,如无右子树,则不执行任何操作

free(T); // 释放根结点

T=NULL; // 空指针赋0

}

}

void PreOrderTraverse(BiTree T,void(*Visit)(int))

{ // 初始条件:二叉树T存在,Visit是对结点操作的应用函数。修改算法6.1

// 操作结果:先序递归遍历T,对每个结点调用函数Visit一次且仅一次

if(T) // T不空

{ Visit(T-data); // 先访问根结点

PreOrderTraverse(T-lchild,Visit); // 再先序遍历左子树

PreOrderTraverse(T-rchild,Visit); // 最后先序遍历右子树

}

}

void InOrderTraverse(BiTree T,void(*Visit)(int))

{ // 初始条件:二叉树T存在,Visit是对结点操作的应用函数

// 操作结果:中序递归遍历T,对每个结点调用函数Visit一次且仅一次

if(T)

{ InOrderTraverse(T-lchild,Visit); // 先中序遍历左子树

Visit(T-data); // 再访问根结点

InOrderTraverse(T-rchild,Visit); // 最后中序遍历右子树

}

}

void PostOrderTraverse(BiTree T,void(*Visit)(int))

{ // 初始条件:二叉树T存在,Visit是对结点操作的应用函数

// 操作结果:后序递归遍历T,对每个结点调用函数Visit一次且仅一次

if(T) // T不空

{ PostOrderTraverse(T-lchild,Visit); // 先后序遍历左子树

PostOrderTraverse(T-rchild,Visit); // 再后序遍历右子树

Visit(T-data); // 最后访问根结点

}

}

void main()

{

BiTree T;

InitBiTree(T); // 初始化二叉树T

printf("按先序次序输入二叉树中结点的值,输入0表示节点为空,输入范例:1 2 0 0 3 0 0\n");

CreateBiTree(T); // 建立二叉树T

printf("先序递归遍历二叉树:\n");

PreOrderTraverse(T,visit); // 先序递归遍历二叉树T

printf("\n中序递归遍历二叉树:\n");

InOrderTraverse(T,visit); // 中序递归遍历二叉树T

printf("\n后序递归遍历二叉树:\n");

PostOrderTraverse(T,visit); // 后序递归遍历二叉树T

}

二叉树的建立及基本操作

楼主你好

具体代码如下:

#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;

}

希望能帮助你哈


本文名称:mysql二叉树怎么建 怎么创建二叉树
转载来源:http://cdxtjz.cn/article/higdsj.html

其他资讯