int main(int argc, char *argv[]) { AVLTree *pTree = NULL; AVLTreeNode *pSearch = NULL; int key = 0; AVLTreeNodeData eB = {9, "키 값이 9"}; AVLTreeNodeData eG = {3, "키 값이 3"}; AVLTreeNodeData eE = {1, "키 값이 1"}; AVLTreeNodeData eC = {10, "키 값이 10"}; AVLTreeNodeData eL = {12, "키 값이 12"}; AVLTreeNodeData eH = {6, "키 값이 6"}; AVLTreeNodeData eI = {4, "키 값이 4"}; AVLTreeNodeData eF = {5, "키 값이 5"}; pTree = createAVLTree(); if (pTree != NULL) { printf("1)\n"); insertNodeAVL(pTree, eB); displayAVLTree(pTree); printf("\n2)\n"); insertNodeAVL(pTree, eG); displayAVLTree(pTree); printf("\n3) LL 회전 발생\n"); insertNodeAVL(pTree, eE); displayAVLTree(pTree); printf("\n4)\n"); insertNodeAVL(pTree, eC); displayAVLTree(pTree); printf("\n5) RR 회전 발생\n"); insertNodeAVL(pTree, eL); displayAVLTree(pTree); printf("\n6) RL 회전 발생\n"); insertNodeAVL(pTree, eH); displayAVLTree(pTree); printf("\n7)\n"); insertNodeAVL(pTree, eI); displayAVLTree(pTree); printf("\n8) LR 회전 발생\n"); insertNodeAVL(pTree, eF); displayAVLTree(pTree); deleteAVLTree(pTree); } return 0; }
int main() { Tree * testTree; int (*compare)(void *, void *, void*, void*); void (*destroy)(void *); compare = &comparePointer; destroy = &destroyPointer; testTree = createAVLTree(compare,destroy); parseDirectory("testdir/", testTree); findInTree(testTree, "file.c"); removeFromTree(testTree, "testdir/", "file.c"); destroyAVLTree(testTree); return(0); }
/// Function name : duplicateAVLTree // Description : Duplicate an AVL tree, performing a shallow copy of objects // // AVL_NODE_EXTRACTOR pfnExtractValue : [in] TreeNode value extraction function, for performing comparisons // DESTRUCTOR pfnDeleteNode : [in][optional] TreeNode deletion function. If this is not specified then the objects will not be destroyed with the tree // CONST AVL_TREE_KEY* ePrimaryKey : [in] Primary sorting property // CONST AVL_TREE_KEY* eSecondaryKey : [in][optional] Secondary sorting property // CONST AVL_TREE_KEY* ePrimarySortOrder : [in][optional] Tertiary sorting property // // Return Value : New AVLTree, you are responsible for destroying it // BearScriptAPI AVL_TREE* duplicateAVLTree(AVL_TREE* pTree, AVL_TREE_KEY* pNewPrimaryKey, AVL_TREE_KEY* pNewSecondaryKey, AVL_TREE_KEY* pNewTertiaryKey) { AVL_TREE_OPERATION* pOperationData; AVL_TREE* pNewTree; /// Create new tree pNewTree = createAVLTree(pTree->pfnExtractValue, pTree->pfnDeleteNode, pNewPrimaryKey, pNewSecondaryKey, pNewTertiaryKey); // Prepare replication operation pOperationData = createAVLTreeOperation(treeprocReplicateAVLTreeNode, ATT_INORDER); pOperationData->pOutputTree = pNewTree; /// Copy objects into new tree performOperationOnAVLTree(pTree, pOperationData); // [CHECK] Index tree if appropirate if (pTree->bIndexed) performAVLTreeIndexing(pNewTree); // Cleanup and return new object deleteAVLTreeOperation(pOperationData); return pNewTree; }
/// Function name : createVariableNameTreeByText // Description : Creates a variables tree sorted by Text // // Return Value : New AVLTree, you are responsible for destroying it // BearScriptAPI AVL_TREE* createVariableNameTreeByText() { // Create tree of VariableNames indexed by name and in alphabetical order return createAVLTree(extractVariableNameTreeNode, deleteVariableNameTreeNode, createAVLTreeSortKey(AK_TEXT, AO_DESCENDING), NULL, NULL); }
/// Function name : createArgumentTreeByID // Description : Creates an ARGUMENT tree sorted by ID // // Return Value : New AVLTree, you are responsible for destroying it // AVL_TREE* createArgumentTreeByID() { // Create a tree of Arguments organised by ID return createAVLTree(extractArgumentTreeNode, deleteArgumentTreeNode, createAVLTreeSortKey(AK_ID, AO_ASCENDING), NULL, NULL); }