當前位置:編程學習大全網 - 編程語言 - 面向兒童編程的二叉樹

面向兒童編程的二叉樹

首先看二叉排序樹的定義:

二叉排序樹也被稱為二叉查找樹。它要麽是壹棵空樹;或者是壹棵二叉樹,具有以下性質:(1)如果左子樹不為空,則左子樹上所有節點的值都小於其根節點的值;(2)如果右子樹不為空,則右子樹上所有節點的值都大於其根節點的值;(3)左右子樹也是二叉排序樹;

根據定義,中序遍歷的輸出序列是“節點值從小到大的遞增序列”

代碼參考如下:

#包含?& ltstdio.h & gt

#包含?& ltmalloc.h & gt

typedef?int?KeyType

typedef?struct?節點?//記錄類型

{

KeyType?關鍵;//關鍵字項

struct?節點?*lchild,* rchild?//左右子指針

}?BSTNode

int?InsertBST(BSTNode?* & ampp,KeyType?k)?

{

如果?(p==NULL)//原樹為空。新插入的記錄是根節點。

{

p=(BSTNode?*)malloc(sizeof(BSTNode));

p->;key = k;

p->;l child = p-& gt;rchild = NULL

回歸?1;

}

不然呢?如果?(k = = p-& gt;關鍵)?//樹中有相同關鍵字的節點,返回0。

回歸?0;

不然呢?如果?(k & ltp->;關鍵)?

回歸?insert BST(p-& gt;lchild,k);?//插入到* p的左子樹中。

其他

回歸?insert BST(p-& gt;rchild,k);//插入到* p的右子樹中。

}

BSTNode?*CreateBST(KeyType?A[],int?n)?//返回BST根節點指針。

{

BSTNode?* bt = NULL//最初bt是壹棵空樹。

int?I = 0;

什麽時候?(我& ltn)?

{

InsertBST(bt,A[I]);?//將關鍵字A[i]插入到二叉排序樹t中。

i++;

}

回歸?Bt;//返回已建立的二叉排序樹的根指針。

}

作廢?mid_order(BSTNode?*T)//按中間順序遍歷二叉樹

{

如果(T)

{

中期訂單(T-& gt;l child);

printf("?%d?”,T-& gt;關鍵);

中期訂單(T-& gt;rchild);

}

}

作廢?主()

{

BSTNode?*bt,*p,* f;

int?n = 9;

KeyType?a[]={1,12,5,8,3,10,7,13,9 };

bt=CreateBST(a,n);

printf(" BST:");中期訂單(Bt);printf(" \ n ");

}

  • 上一篇:用小麗畫得怎麽寫得更生動
  • 下一篇:高分急求:VC中鼠標移到按鈕上後,更改按鈕圖片的實現代碼
  • copyright 2024編程學習大全網