Untitled
unknown
plain_text
2 years ago
2.4 kB
4
Indexable
#include <stdio.h>
struct BinarySerchTreeNode{
int data;
struct BinarySerchTreeNode* left; //left child
struct BinarySerchTreeNode* right; //right child
};
struct BinarySerchTreeNode* addData(int data){
struct BinarySerchTreeNode* node = malloc(sizeof(struct BinarySerchTreeNode));
node->data = data;
node->left = NULL;
node->right = NULL;
return node;
};
struct BinarySerchTreeNode* makeTree(){
struct BinarySerchTreeNode* root = addData(6);
struct BinarySerchTreeNode* rootLeft = addData(2);
struct BinarySerchTreeNode* rootRight = addData(8);
root->left = rootLeft;
root->right = rootRight;
struct BinarySerchTreeNode* rootLeftLeft = addData(1);
struct BinarySerchTreeNode* rootRightRight = addData(4);
rootLeft->left = rootLeftLeft;
rootLeft->right = rootRightRight;
struct BinarySerchTreeNode* rootLeftLeftLeft = addData(3);
rootRightRight->left = rootLeftLeftLeft;
return root;
}
struct BinarySerchTreeNode* findMin(struct BinarySerchTreeNode* node){
if(node == NULL){
return NULL;
}
else if(node->left == NULL){
return (node);
}
else {
return(findMin(node->left));
}
}
struct BinarySerchTreeNode* deleteN(int data, struct BinarySerchTreeNode* node){
struct BinarySerchTreeNode* deleteStore;
struct BinarySerchTreeNode* child;
if(node == NULL){
}
else if(data < node->data){
node->left = deleteN(data,node->left);
}
else if(data > node->data){
node->right = deleteN(data,node->right);
}
else if(node->left && node->right){
deleteStore = findMin(node->right);
node->data = deleteStore->data;
node->right = deleteN(node->data,node->right);
}
else{
deleteStore = node;
if(node->left == NULL){
child = node->right;
}
else if(node->right == NULL){
child = node->left;
}
free(deleteStore);
return child;
}
return node;
}
int main(){
struct BinarySerchTreeNode* root = makeTree();
deleteN(3,root);
inOrderTraversal(root);
return 0;
}
void inOrderTraversal(struct BinarySerchTreeNode* node){
if(node == NULL) return;
inOrderTraversal(node->left);
printf("%d ", node->data);
inOrderTraversal(node->right);
}
Editor is loading...
Leave a Comment