void destoryTree(segmentTreeNode *root) { if (!root) return; destoryTree(root->left); destoryTree(root->right); delete root; }
struct tree* destoryTree(struct tree* head) { if (head == NULL) return NULL; head->left = destoryTree(head->left); head->right = destoryTree(head->right); free(head); return NULL; }
void destoryTree(binTree_t* pTree) { if (pTree == NULL) { return; } destoryTree(pTree->left); destoryTree(pTree->right); free(pTree); }
void destoryTree(Node* node) { if(node != NULL) { destoryTree(node->left); destoryTree(node->right); delete node; } }
void tex_cache_fini() { if(free_tex_head){ free(free_tex_head); free_tex_head = NULL; } if(deleted_node){ free(deleted_node); deleted_node = NULL; } destoryTree(rb); }
void processTree(Node* root, int noOfCodeWords, bool firstCode, vector<codeWords>& store) { int unique = noOfCodeWords/2; int rDepth = rightmostDepth(root); for(int i = 1;i < rDepth; i++) { Node* rootCopy = copy(root); Node* newRoot = rotate(NULL, rootCopy, rightmostAtDepth(rootCopy, i)); codeWords temp = codeWordsFromTree(newRoot, noOfCodeWords, firstCode); show(temp); store.push_back(temp); processTree(newRoot, noOfCodeWords, firstCode, store); destoryTree(newRoot); } }
int main() { struct tree* head = NULL; head = insert(head, 10); head = insert(head, 5); head = insert(head, 13); head = insert(head, 11); head = insert(head, 12); head = insert(head, 7); head = insert(head, 9); head = insert(head, 8); head = insert(head, 2); head = insert(head, 16); printTree(head); printf("Max value: %d\n", maxValue(head)); printf("Min value: %d\n", minValue(head)); printf("find value: %d\n", lookup(head, 8)); printf("find value: %d\n", lookup(head, 1)); printf("size: %d\n", size(head)); printf("Depth: %d\n", findMaxDepth(head)); head = destoryTree(head); }
~segmentTree() { destoryTree(tree); }