두 갈래 정렬 트 리 (BST) 삽입

2590 단어 #408 데이터 구조
먼저 search 로 삽입 할 위 치 를 찾 습 니 다. (중복 되 는 점 이 없다 고 가정 합 니 다)
그 다음 에 해당 하 는 위 치 를 찾 으 면 왼쪽 아이 나 오른쪽 아이 가 빈 점 으로 삽입 하기 때문에 삽입 하 는 노드 는 반드시 나무의 잎 이다.
BST 를 구축 할 때 삽입 동작 을 사 용 했 습 니 다.
코드 는 다음 과 같다.
#include
#include
using namespace std;
#define len 15

typedef struct Bitnode
{
    int data;
    struct Bitnode *lc;
    struct Bitnode *rc;
}Bitnode,*Bitree;

void searchBiTreeNode(Bitree &root,Bitree &node) //   
{
    if(root==NULL)
        return ;
    if(root->data>node->data){
        searchBiTreeNode(root->lc,node);
        if(root->lc==NULL)
            root->lc=node;
    }
    else if(root->datadata){
        searchBiTreeNode(root->rc,node);
        if(root->rc==NULL){
            root->rc=node;
        }
    }
}

void insertNode(Bitree &bitree,Bitree &node) //   
{
    if(bitree==NULL)
        bitree=node;
    else
        searchBiTreeNode(bitree,node);
}

void createbst(Bitree &bitree,int arr[]) //   BST 
{
    for(int i=0;idata=arr[i];
        s->lc=NULL;
        s->rc=NULL;
        insertNode(bitree,s);
    }
}

void midsearchbitreeprint(Bitree &bitree) //       
{
    if(bitree==NULL)
        return ;
    midsearchbitreeprint(bitree->lc);
    printf("%d ",bitree->data);
    midsearchbitreeprint(bitree->rc);
}

Bitree BST_Search(Bitree &root,int x){ //   
    if(root == NULL){
        return NULL;
    }else if(root->data>x){
        return BST_Search(root->lc,x);
    }else if(root->datarc,x);
    }else{
        return root;
    }
}

int main()
{
    int arr[len]={62,88,58,47,35,73,51,99,37,93,23,27,45,21,12};
    Bitree bitree=NULL;
    createbst(bitree,arr);
    midsearchbitreeprint(bitree);
    printf("
"); Bitree searchNode = BST_Search(bitree,27); if(searchNode == NULL){ printf("
"); }else{ if(searchNode->lc==NULL && searchNode->rc==NULL){ // printf(" x=%d
",searchNode->data); }else{ if(searchNode->lc != NULL){ printf("x=%d : %d
",searchNode->data,searchNode->lc->data); } if(searchNode->rc != NULL){ printf("x=%d : %d
",searchNode->data,searchNode->rc->data); } } } return 0; }

 

좋은 웹페이지 즐겨찾기