建立二叉树链表结构
建立二叉樹鏈表結構
- 題目
- 分析
- 代碼
- 基本數據類型
- 核心代碼
題目
已知非空二叉樹采用順序存儲結構,結點的數據信息依次存儲在數組BT[0…MAXZize-1]中(若元素為0,表示在二叉樹中不存在),請寫一算法,生成該二叉樹的鏈表結構。
分析
循環到某一點BT[i]時,主要是求結點的雙親結點,BT[i]結點到底鏈接在誰的的孩子結點,這是個主要的問題。
- 計算雙親結點時,j=(i-1)/2;
- 到底是j的左孩子還是右孩子呢
(1)若i-2*j-1==0,說明是j的左孩子。
(2)若i-2*j-1!=0 說明是j的右孩子
代碼
基本數據類型
后面的代碼可能會出現相似的數據類型,后面就不重復寫了。
#define MAXSize 100 typedef struct bNode{ int data; struct bNode *lchild,*rchild; }BTNode,*BTREE;#define len sizeof(BTNode)核心代碼
// 建立二叉樹鏈表結構 BTREE CTREATEBLINK(int BT[],int n){ BTREE T=NULL,PRT[MAXSize]; int j=0; PRT[j]=(BTREE) malloc(len); PRT[j]->data=BT[0]; PRT[j]->rchild =NULL; PRT[j]->lchild= NULL ; T=PRT[j]; for (int i = 1; i < n; i++) { if (BT[i]!=0) { PRT[i]=(BTREE) malloc(len); PRT[i]->data=BT[i]; PRT[i]->rchild =NULL; PRT[i]->lchild= NULL ; j = (i-1)/2; if (i-2*j-1==0) { PRT[j]->lchild=PRT[i]; }else { PRT[j]->rchild=PRT[i]; } } // if }// for return T; }總結
- 上一篇: 海康威视摄像机OSD设置、字符叠加(时间
- 下一篇: autojs调用java识字,在js中,