真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

mysql二叉樹怎么建 怎么創(chuàng)建二叉樹

給了一個二叉鏈表,怎么建立二叉樹啊

#include

創(chuàng)新互聯(lián)公司主要業(yè)務(wù)有網(wǎng)站營銷策劃、成都網(wǎng)站設(shè)計、網(wǎng)站制作、微信公眾號開發(fā)、成都小程序開發(fā)、H5網(wǎng)站設(shè)計、程序開發(fā)等業(yè)務(wù)。一次合作終身朋友,是我們奉行的宗旨;我們不僅僅把客戶當(dāng)客戶,還把客戶視為我們的合作伙伴,在開展業(yè)務(wù)的過程中,公司還積累了豐富的行業(yè)經(jīng)驗、成都全網(wǎng)營銷資源和合作伙伴關(guān)系資源,并逐漸建立起規(guī)范的客戶服務(wù)和保障體系。 

#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如何創(chuàng)建二叉樹

在二叉樹中有一種平衡二叉樹,通過平衡算法可以讓二叉樹兩邊的節(jié)點平均分布,這樣就能讓所有的索引查找都在一個近似的時間內(nèi)完成。而MySQL這類數(shù)據(jù)庫采用了二叉樹的升級版B+Tree的形式,每個節(jié)點有三個支葉,不過其算法原理仍然是平衡樹的原理。

數(shù)據(jù)結(jié)構(gòu) 創(chuàng)建二叉樹

//這個題目挺有意思的,很喜歡,你看看我這個咋樣啊?

#includestdio.h

#includemalloc.h

typedef

char

elemtype

;

typedef

struct

node

{

elemtype

data

;

struct

node

*lchild

;

struct

node

*rchild

;

}btree,*pbtree

;

//先序創(chuàng)建樹

void

createbtree(pbtree

*t)

//此處參數(shù)應(yīng)該用指針的指針,應(yīng)給它要改變指向二叉樹根的那個指針

{

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)

//逆時針旋轉(zhuǎn)90°打印二叉樹,n為縮進(jìn)層數(shù),初始值為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

回車!

空格

回車!

空格

回車!

如何構(gòu)建二叉樹

先序遞歸創(chuàng)建二叉樹,并對其進(jìn)行 先序、中序、后序遍歷

#includemalloc.h // malloc()等

#includestdio.h // 標(biāo)準(zhǔn)輸入輸出頭文件,包括EOF(=^Z或F6),NULL等

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

#includemath.h // 數(shù)學(xué)函數(shù)頭文件,包括floor(),ceil(),abs()等

#define ClearBiTree DestroyBiTree // 清空二叉樹和銷毀二叉樹的操作一樣

typedef struct BiTNode

{

int data; // 結(jié)點的值

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

}BiTNode,*BiTree;

int Nil=0; // 設(shè)整型以0為空

void visit(int e)

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

}

void InitBiTree(BiTree T)

{ // 操作結(jié)果:構(gòu)造空二叉樹T

T=NULL;

}

void CreateBiTree(BiTree T)

{ // 算法6.4:按先序次序輸入二叉樹中結(jié)點的值(可為字符型或整型,在主程中定義),

// 構(gòu)造二叉鏈表表示的二叉樹T。變量Nil表示空(子)樹。修改

int number;

scanf("%d",number); // 輸入結(jié)點的值

if(number==Nil) // 結(jié)點的值為空

T=NULL;

else // 結(jié)點的值不為空

{ T=(BiTree)malloc(sizeof(BiTNode)); // 生成根結(jié)點

if(!T)

exit(OVERFLOW);

T-data=number; // 將值賦給T所指結(jié)點

CreateBiTree(T-lchild); // 遞歸構(gòu)造左子樹

CreateBiTree(T-rchild); // 遞歸構(gòu)造右子樹

}

}

void DestroyBiTree(BiTree T)

{ // 初始條件:二叉樹T存在。操作結(jié)果:銷毀二叉樹T

if(T) // 非空樹

{ DestroyBiTree(T-lchild); // 遞歸銷毀左子樹,如無左子樹,則不執(zhí)行任何操作

DestroyBiTree(T-rchild); // 遞歸銷毀右子樹,如無右子樹,則不執(zhí)行任何操作

free(T); // 釋放根結(jié)點

T=NULL; // 空指針賦0

}

}

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

{ // 初始條件:二叉樹T存在,Visit是對結(jié)點操作的應(yīng)用函數(shù)。修改算法6.1

// 操作結(jié)果:先序遞歸遍歷T,對每個結(jié)點調(diào)用函數(shù)Visit一次且僅一次

if(T) // T不空

{ Visit(T-data); // 先訪問根結(jié)點

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

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

}

}

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

{ // 初始條件:二叉樹T存在,Visit是對結(jié)點操作的應(yīng)用函數(shù)

// 操作結(jié)果:中序遞歸遍歷T,對每個結(jié)點調(diào)用函數(shù)Visit一次且僅一次

if(T)

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

Visit(T-data); // 再訪問根結(jié)點

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

}

}

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

{ // 初始條件:二叉樹T存在,Visit是對結(jié)點操作的應(yīng)用函數(shù)

// 操作結(jié)果:后序遞歸遍歷T,對每個結(jié)點調(diào)用函數(shù)Visit一次且僅一次

if(T) // T不空

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

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

Visit(T-data); // 最后訪問根結(jié)點

}

}

void main()

{

BiTree T;

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

printf("按先序次序輸入二叉樹中結(jié)點的值,輸入0表示節(jié)點為空,輸入范例: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//二叉樹結(jié)點定義

{

char data;

struct node *lChild;//左孩子

struct node *rChild;//右孩子

}BTNode;

//*************************************二叉樹操作***************************************

void Initial_BT(BTNode * b)

{

b=NULL;

}

void Creat_BT(BTNode * b)//創(chuàng)建二叉樹

{

BTNode *St[MAX];//用棧輔助實現(xiàn)二叉樹的建立

BTNode *p=NULL;

b=NULL;

int top=-1;//棧指針

int k;//k為左右孩子標(biāo)示(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)//如果為根節(jié)點

b=p;

else

{

switch(k)

{

case 1:

St[top]-lChild=p;

break;

case 2:

St[top]-rChild=p;

break;

}

}

}

ch=getchar();//繼續(xù)讀入數(shù)據(jù)

}

}

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.創(chuàng)建二叉樹.\n"

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

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

"\t\t4.葉子結(jié)點個數(shù).\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個葉子結(jié)點\n",Leaf_Sum(b));

system("pause");

getchar();

goto GOTO;

case '5':

system("pause");

break;

default:

printf("輸入錯誤!\n"

"重新輸入:");

goto GOTO1;

}

}

int main()

{

Start();

return 0;

}

希望能幫助你哈


新聞標(biāo)題:mysql二叉樹怎么建 怎么創(chuàng)建二叉樹
地址分享:http://weahome.cn/article/higdsj.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部