void DeleteBinaryTree(struct BinaryNode *node) { if(!node) return; DeleteBinaryTree(node->smaller); DeleteBinaryTree(node->greater); free(node); }
void DeleteBinaryTree(struct BinaryTreeNode *root) { if(root == NULL) return; DeleteBinaryTree(root->left); DeleteBinaryTree(root->right); printf("delete:%d\n", root->data); free(root); }
void main() { int values[16] = {8, 1, 3, 5, 7, 9, 10, 12, 14, 11, 13, 15, 0, 2, 4, 6}; int loop; for(loop = 0; loop < 16; loop++) { Insert(values[loop], root); } LinearSearch_NonRecursive(9, values, 16); LinearSearch_Recursive(9, values, 0, 16); BinarySearch_Recursive(9, root, 0); BinarySearch_NonRecursive(9, root); LinearSearch_NonRecursive(16, values, 16); LinearSearch_Recursive(17, values, 0, 16); BinarySearch_Recursive(18, root, 0); BinarySearch_NonRecursive(19, root); DeleteBinaryTree(root); }
int main() { struct BinaryTreeNode *root = (struct BinaryTreeNode *)malloc(sizeof(struct BinaryTreeNode)); struct BinaryTreeNode *second = (struct BinaryTreeNode *)malloc(sizeof(struct BinaryTreeNode)); struct BinaryTreeNode *third = (struct BinaryTreeNode *)malloc(sizeof(struct BinaryTreeNode)); struct BinaryTreeNode *fourth = (struct BinaryTreeNode *)malloc(sizeof(struct BinaryTreeNode)); struct BinaryTreeNode *fifth = (struct BinaryTreeNode *)malloc(sizeof(struct BinaryTreeNode)); struct BinaryTreeNode *sixth = (struct BinaryTreeNode *)malloc(sizeof(struct BinaryTreeNode)); struct BinaryTreeNode *seventh = (struct BinaryTreeNode *)malloc(sizeof(struct BinaryTreeNode)); root->data = 1; root->left = second; root->right = third; second->data = 2; second->left = fourth; second->right = fifth; third->data = 3; third->left = sixth; third->right = seventh; fourth->data = 4; fourth->left = fourth->right = NULL; fifth->data = 5; fifth->left = fifth->right = NULL; sixth->data = 6; sixth->left = sixth->right = NULL; seventh->data = 7; seventh->left = seventh->right = NULL; DeleteBinaryTree(root); return 1; }