JustPaste
HomeCategoriesAboutDonateContactTerms of UsePrivacy Policy
JustPaste

Free online notepad — write and share instantly

Navigate

  • Home
  • Timeline
  • Categories

Info

  • About
  • Donate
  • Contact

Legal

  • Terms of Use
  • Privacy Policy

© 2026 JustPaste.app. All rights reserved.

Made with ♥ by JustPaste

Untitled Page | JustPaste.app
about 2 months ago1 views
👨‍💻Programming
struct Node* deleteNode(struct Node* root, int num) {
	struct Node* parent = null;
	struct Node* iter = root;
	int direction = -1;

	while (iter->value != num && iter != NULL) {
		if (num < iter->value) {
			parent = iter;
			iter = iter->left;
			direction = 0;
		} else if (num > iter->value) {
			parent = iter;
			iter = iter->right;
			direction = 1;
		} else {
			break;
		}
	}

	if (parent == NULL) {
		if (parent->left != NULL && parent->right != NULL) {
			struct Node* newRoot = parent->left;
			newRoot->right = parent->right;
			free(parent);
			return newRoot;
		} else if (parent->left != NULL) {
			struct Node* newRoot = parent->left;
			free(parent);
			return newRoot;
		} else if (parent->right != NULL) {
			struct Node *newRoot = parent->right;
			free(parent);
			return newRoot;
		} else {
			return NULL;
		}
	}

	if (iter == NULL) {
		return root;
	}

	if (iter->left != NULL && iter->right != NULL) {
		if (num < parent->value) {
			iter->left->right = iter->right;
			parent->left = iter->left;
			free(iter);
		} else if (num > parent->value) {
			iter->left->right = iter->right;
			parent->right = iter->left;
			free(iter);
		}
	} else if (iter->left != NULL) {
		if (num < parent->value) {
			parent->left = iter->left;
			free(iter);
		} else if (num > parent->value) {
			parent->right = iter->left;
			free(iter);
		}
	} else if (iter->right != NULL) {
		if (num < parent->value) {
			parent->left = iter->right;
			free(iter);
		} else if(num > parent->value) {
			parent->right = iter->right;
			free(iter);
		}
	} else {
		free(iter);
	}

	return root;
}
← Back to timeline