ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 이진트리
    자료구조 & 알고리즘 2022. 7. 10. 23:04
    #include <iostream>
    #include <algorithm>
    using namespace std;
    
    
    struct node {
    	int data;
    	struct node* left;
    	struct node* right;
    };
    
    
    node* Insert(node* root, int data)
    {
    	if (root == NULL)
    	{
    		root = new node;
    		root->left = root->right = NULL;
    		root->data = data;
    		return root;
    	}
    }
    
    node* FindMinNode(node* root)
    {
    	node* min = root;
    	while (min->left != NULL)
    	{
    		min = min->left;
    	}
    	return min;
    }
    
    node* Delete(node* root, int data)
    {
    	node* tmpRoot = NULL;
    	if (root == NULL)
    	{
    		return NULL;
    	}
    
    	if (root->data < data)
    	{
    		root->right = Delete(root->right, data);
    	}
    	else if (root->data > data)
    	{
    		root->left = Delete(root->left, data);
    	}
    	else
    	{
    		if (root->left != NULL && root->right != NULL)
    		{
    			tmpRoot = FindMinNode(root->right);
    			root->data = tmpRoot->data;
    			root->right = Delete(root->right, tmpRoot->data);
    		}
    		else
    		{
    			tmpRoot = (root->left == NULL) ? root->right : root->left;
    			delete root;
    			return tmpRoot;
    		}
    	}
    }
    
    
    int main()
    {
    
    
    	
    
    	return 0;
    }

    '자료구조 & 알고리즘' 카테고리의 다른 글

    MVC 패턴  (0) 2022.07.10
    프로세스와 쓰레드  (0) 2022.07.10
    OOP  (0) 2022.07.10
    해쉬 테이블  (0) 2022.07.10
Designed by Tistory.