2 3樹的實現

2021-09-23 05:45:50 字數 1897 閱讀 8074

#include#include#include#include#include#include#define num(p) (p==null?0:p->num)

#define getp(p) (p==null?null:p->parent)

#define getr(p) (p==null?null:p->rightnode)

#define getl(p) (p==null?null:p->leftnode)

#define getm(p) (p==null?null:p->midnode)

#define nil null;

#define null null;

/***title:2-3tree

*time:2019-3-23 11:04:04

*author:srv-330**/

//樹結點

typedef struct treenodetn,*ptn;

//修復

void fixup(ptn p,ptn *root);

ptn createtreenode(int value);//建立乙個樹結點

//交換

void change(int* a,int* b);

//插入乙個結點

ptn inserttreenode(ptn p,ptn* rootp)else

}else if(num(move)==2)else if(value>move->value[1])else

}tm=getm(move);

tr=getr(move);

tl=getl(move); }

if(num(move)==1)else if(num(move)==2)else

}//建立乙個樹結點

ptn createtreenode(int value)

//輸出這個樹的資訊

void printtree(ptn root,int deep)

printtree(root->midnode,deep);//輸入這個樹的中間結點的資訊

for(int j=0;jvalue[0]);//輸出陣列value(0)的值

printtree(root->leftnode,deep);//再遍歷左結點

//這是乙個23 樹 只有兩個值 分別儲存在value[0]和value[1]中 }

//交換a,b 在給value陣列排序的時候將會用到

void change(int *a,int *b)

void fixup(ptn p,ptn *root)else if(num(move)==3&&num(movep)==1&&getl(movep)==move)else if(num(move)==3&&num(movep)==1&&getr(movep)==move)else if(num(move)==3&&num(movep)==2&&getl(movep)==move)else if(num(move)==3&&num(movep)==2&&getm(movep)==move)else if(num(move)==3&&num(movep)==2&&getr(movep)==move)else }

//銷毀樹 釋放每個結點指向的空間 也用到了遞迴的思想

void droptree(ptn root)

if(root->rightnode)

if(root->midnode)

if(root->tmpnode)

free(root);

root=null;

}main()while(node!=null);

printtree(root,0);

droptree(root);

}

對於2-3樹的具體實現過程 比較抽象 這裡附上**方便以後呼叫新增鏈結描述

2 3樹 Java實現部分演算法

2 3樹是一種樹結構型別的檢索樹,符合下面的定義 1 乙個節點包含乙個或兩個關鍵碼 2 每個內部結點有兩個子女 如果它包含乙個關鍵碼 或三個子女 如果它包含三個關鍵碼 3 所有葉結點都在樹的同一層,因此樹的高度總是平衡的 4 對於每個結點,其左子樹的所有後繼結點都小於第乙個關鍵碼的值,而其中間子樹的...

2 3樹的插入

2 3樹所有葉子都在同乙個層次,也就是說每一層的葉子數目都是相等的,如圖 一 插入資料3,插入的時候從根結點8發現,比8大往左走,到達4,發現比4小,繼續往左走,然後發現比1大,並且此時1結點只有乙個結點,所以可以插入,如圖 二.插入5 插入的時候從根結點8發現,比8大往左走,到達4,發現比4大,繼...

23 樹與樹演算法

樹 英語 tree 是一種抽象資料型別 adt 或是實作這種抽象資料型別的資料結構,用來模擬具有樹狀結構性質的資料集合。它是由n n 1 個有限節點組成乙個具有層次關係的集合。把它叫做 樹 是因為它看起來像一棵倒掛的樹,也就是說它是根朝上,而葉朝下的。它具有以下的特點 比如說 無序樹 樹中任意節點的...