Exemplo n.º 1
0
void releaseTree(Node * a) {
	if (a == NIL)
		return;
	releaseTree(a->left);
	releaseTree(a->right);
	free(a);
}
Exemplo n.º 2
0
void AABBTree::releaseTree(AABBNode *node)
{
    if( node!= nullptr )
    {
        releaseTree(node->leftChild);
        releaseTree(node->rightChild);
        delete node->leftChild;
        delete node->rightChild;
    }
}
Exemplo n.º 3
0
int main()
{
	int i;
	int times;
	//NodeType dynamicNum[] = {1, 3, 0, 3, 5, 3, 8, 1, 6, 9, 4};
// 	NodeType callNum[][CALL_NUM_LENGHT] = 
// 	{
// 		{1, 3, 3, 3, 5, 3, 8, 1, 6, 9, 4},
// 		{1, 3, 3, 3, 5, 3, 8, 1, 6, 9, 7},
// 		{1, 3, 3, 3, 5, 3, 8, 1, 6, 8, 4},
// 		{1, 3, 3, 3, 5, 3, 8, 1, 6, 8, 5},
// 		{1, 3, 3, 3, 5, 3, 8, 1, 5, 3, 5},
// 		{1, 3, 3, 3, 5, 3, 8, 1, 5, 2, 5},
// 		
// 		{1, 2, 3, 3, 5, 3, 8, 1, 6, 9, 4},
// 		{1, 2, 4, 3, 5, 3, 8, 1, 6, 9, 7},
// 		{1, 5, 3, 3, 5, 3, 8, 1, 6, 8, 4},
// 		{1, 4, 3, 3, 5, 3, 8, 1, 6, 8, 5},
// 		{1, 8, 3, 3, 5, 3, 8, 1, 5, 3, 5},
// 		{1, 9, 3, 3, 5, 3, 8, 1, 5, 2, 5},
// 	};

	NodeType dynamicNum[] = {1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
	NodeType dynamicNumC[] = {1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};

	//times = GetTickCount();
	
	Tree *pTree;
	pTree = createTree();
	for (i=0; i<TIMES_COUNT; i++)
	{
		BOOL ret;
		incCallNum(dynamicNum, sizeof(dynamicNum));
		//printfCallNumber(dynamicNum, sizeof(dynamicNum));
		ret = addCallNumber(pTree, dynamicNum, sizeof(dynamicNum));
		if (ret == FALSE)
			printf("add node failed.\n");
	}
	
	printf("del...\n");
	//getchar();
	for (i=0; i<TIMES_COUNT; i++)
	{
		delCallNumber(pTree, dynamicNum, sizeof(dynamicNum));
		//printfCallNumber(dynamicNum, sizeof(dynamicNum));
		decCallNum(dynamicNum, sizeof(dynamicNum));
	}
	
	releaseTree(pTree);
	pTree = NULL;

	displayTree(pTree);

	printf("\n");
	printf("ok\n");
	
	getchar();
	return 0;
}
Exemplo n.º 4
0
int releaseTree(mp3Node* root)
{
  mp3Node* tleft;
  mp3Node* tright;
    
  if(root == NULL)
     return 0;

      tleft = root->left;
      tright = root->right;
      
      free(root->data);
      free(root);
      
    return releaseTree(tleft) + 1 + releaseTree(tright);

}
Exemplo n.º 5
0
// Helper method for memory management
void releaseTree(struct BFTreeNode* node) {
    int value;
    struct QueueNode* child;

    if (node->nodeWrapped->children->length == 0) {
        freeNode(node);
    }

    while (node->nodeWrapped->children->length > 0) {
        child = deQueue(node->nodeWrapped->children);
        releaseTree(child->thisNode);
    }
}
Exemplo n.º 6
0
static void clean(
  char *dirName
){

  /**
   | Does the job for the directory "dirName".
   |
   | Builds a structure holding the TeX-related files, and does the
   | required cleanup; finally, removes the file structure.
   | If the list appended to "dirs" has been filled, recurse over the
   | tree of subdirectories.
  **/

  Froot *teXTree;               /* Root node of the TeX-related files  */
  Froot *dirs;                  /* Subdirectories in this directory    */
  Fnode *pFN;                   /* Running pointer over subdirectories */

  if ((dirs = calloc(2, sizeof(Froot))) == 0) {
    noMemory();
  }
  dirs->extension = "subs";

  if ((teXTree = buildTree(dirName, dirs)) != 0) {

    if (output_level >= DEBUG) {
      printTree(teXTree);
    }

    examineTree(teXTree, dirName);
    releaseTree(teXTree);
  }

  for (pFN = dirs->firstNode;   pFN != 0;   pFN = pFN->next) {
    clean(pFN->name);
  }
  releaseTree(dirs);
}
Exemplo n.º 7
0
int main(int argc, char *argv[])
{
  struct tree at;
  int op,lr,parent,child;

  initTree(&at);
  
  while(scanf("%d",&op)==1 && op!=0){
    switch(op){
      case 1://insert node
        scanf("%d%d%d",&parent,&lr,&child);
        printf("insert node(p=%d lr=%d c=%d):",parent,lr,child);
        if(insertTreeNode(&at,parent,lr,child)){
          printf("success\n");
        }else{
          printf("fail\n");
        }
        break;
      case 2://breadfirst traversal
        printf("breadthfirst:");
        breadthFirstTraversal(&at);
        printf("\n");
        break;
      case 3://pre order traversal
        printf("depth preorder:");
        depthFirstTraversal(&at,PREORDER);
        printf("\n");
        break;
      case 4://in order traversal
        printf("depth inorder:");
        depthFirstTraversal(&at,INORDER);
        printf("\n");
        break;
      case 5://post order traversal
        printf("depth postorder:");
        depthFirstTraversal(&at,POSTORDER);
        printf("\n");
        break;
      default:
        printf("error operator\n");
        break;
    }
  }
  
  releaseTree(&at);
  
  return 0;
}
Exemplo n.º 8
0
AABBTree::~AABBTree()
{
    releaseTree(mRoot);
}
Exemplo n.º 9
0
int main(
  int argc,
  char *argv[]
){
  Froot *dirNames;              /* To hold the directories to be scanned */
  Fnode *pFN;                   /* Running pointer over directory names  */
  int    to_bExt  = FALSE;      /* Flag "next parameter to bExt"         */

  /**
   | Scans the arguments appropriately; the required directories are stored
   | in the linked list starting at "dirNames".
  **/

  programName = baseName(argv[0]);

  if ((dirNames = calloc(2, sizeof(Froot))) == 0) {
    noMemory();
  }
  dirNames->extension = "argv";

  while (--argc) {
    if ((*++argv)[0] == '-') {
      switch ( (*argv)[1] ) {
        case 'i':   case 'I':
          confirm = TRUE;
          break;

        case 'r':   case 'R':
          recurse = TRUE;
          break;

        case 'k':   case 'K':
          keep = TRUE;
          break;

        case 'b':   case 'B':
          to_bExt = TRUE;
          break;

        case 'q':   case 'Q':
          output_level = QUIET;
          break;

        case 'v':   case 'V':
          output_level = VERBOSE;
          break;

        case 'd':   case 'D':
          output_level = DEBUG;
          break;

        case 'p':   case 'P':
          pretend = TRUE;
          break;

        case 'o':   case 'O':
          older = TRUE;
          break;

        default:
          syntax();
      }

    } else {
      if (to_bExt) {
        strcpy(bExt, *argv);
        to_bExt = FALSE;
      } else {
        insertNode(*argv, 0, 0, 0, dirNames);
      }
    }
  }

  if (to_bExt) {
    syntax();
  }
  n_bExt = strlen(bExt);

  /**
   | If no parameter has been given, clean the current directory
  **/

  if ((pFN = dirNames->firstNode) == 0) {
    clean(".");
  } else {
    while (pFN != 0) {
      clean(pFN->name);
      pFN = pFN->next;
    }
  }
  releaseTree(dirNames);

  return EXIT_SUCCESS;
}
Exemplo n.º 10
0
// Discharging
void treeFree(void) {
	releaseTree(root);
}