1、BST树节点结构:
BSTNODE
{
BSTNODE* link;//多边形链表
BSTNODE* front;
BSTNODE* back;
VECTOR3D 多边形;
}
2、创建BST树:
void BST_Create(BSTNODE_PTR root)
{
if(root==NULL)
return ;
while(root->link!=NULL)
{
if(root->link在root的前面)
{
InsertBST(root->back,root->link);
}
else
{
InsertBST(root->front,root->link);
}
root->link=root->link->link;
}
BST_Create(root->front);
BST_Create(root->back);
}
3、插入到链表方法:
void InsertBST( BSTNODE_PTR root,BSTNODE_PTR pinsert)
{
if(root==NULL)
return ;
InsertBST(root->link,pinsert);
root->link=pinsert;
}
4、遍历方法:
void BST_Search(BSTNODE_PTR root,VECTOR3D viewpoint)
{
if(root==NULL)
return;
if(视点在根多边形的前面)
{
BST_Search(root->back,viewpoint);
渲染根的多边形;
BST_Search(root->front,viewpoint);
}
else
{
BST_Search(root->front,viewpoint);
渲染根的多边形;
BST_Search(root->back,viewpoint);
}
}