四叉樹或四元樹也被稱為q樹(q-tree)。四叉樹廣泛應用於影象處理、空間資料索引、2d中的快速碰撞檢測、儲存稀疏資料等,而八叉樹(octree)主要應用於3d圖形處理。
實際的資料結構,就是乙個樹根不斷地往下擴,每次分成八個枝,直到葉子為止。
葉子節點代表了解析度最高的情況。例如解析度設成0.01m,那麼每個葉子就是乙個1cm見方的小方塊
//定義八叉樹節點類
template
struct octreenode
};//建立八叉樹
template
void createoctree(octreenode
*&root, int maxdepth, double xmin, double xmax, double ymin, double ymax, double zmin, double zmax)
}int i =
1;//先序遍歷八叉樹
template
void preorder(octreenode
*& p)
}//求八叉樹的深度
template
int depth(octreenode
*& p)
//計算單位長度,為查詢點做準備
int cal(int num)
return result;
}//查詢點
int maxdepth =
0;int times =
0;static double xmin =
0, xmax =
0, ymin =
0, ymax =
0, zmin =
0, zmax =
0;int tmaxdepth =
0;double txm =
1, tym =
1, tzm =
1;template
void find(octreenode
*& p, double x, double y, double z)
if (x <= p->xmin + txm && x >= p->xmax - txm && y <= p->ymin + tym &&
y >= p->ymax - tym && z <= p->zmin + tzm && z >= p->zmax - tzm)
else
if (x < (p->xmax - xmind) && y < (p->ymax - ymind) && z < (p->zmax - zmind))
else
if (x < (p->xmax - xmind) && yymax - ymind) && z>(p->zmax - zmind))
else
if (x > (p->xmax - xmind) && y < (p->ymax - ymind) && z < (p->zmax - zmind))
else
if (x > (p->xmax - xmind) && yymax - ymind) && z>(p->zmax - zmind))
else
if (xxmax - xmind) && y>(p->ymax - ymind) && z < (p->zmax - zmind))
else
if (xxmax - xmind) && y>(p->ymax - ymind) && z > (p->zmax - zmind))
else
if (x > (p->xmax - xmind) && y > (p->ymax - ymind) && z < (p->zmax - zmind))
else
if (x > (p->xmax - xmind) && y > (p->ymax - ymind) && z > (p->zmax - zmind))
}//main函式
int main()
else
if (choiced ==
1)
else
}else
if (choiced ==
2)
else
if (choiced ==
3)
else
if (choiced ==
4)
else}}
二叉樹的C 原始碼
參考著課件,寫了乙個簡單的二叉樹,用法很簡單,方法也很少,要是誰有興趣的話,加上乙個線索二叉樹的方法,就更好了。kakabtree btree a,b,c,d e,f 用廣義表,表示法輸入 btree.preorder 前序遍歷 btree.inorder 中序遍歷 btree.postorder ...
二叉搜尋樹C 實現原始碼
二叉搜尋樹的性質是 對樹中的每個結點x,它的左子樹的值小於x,它的右子樹的值大於x。binarytree.h include utility.h typedef struct treenode ptrtonode typedef struct treenode position typedef st...
STL原始碼閱讀 八
字串的雜湊函式 f s 5 f s 1 s,當len s 1,則f s s 其中s是指向字串的指標。示例 inline size t stl hash string const char s template struct hash sgi hash table碰撞檢測方法是鏈結法,雜湊表的每個槽都...