C語言實現常用資料結構——二叉樹

來源:互聯網
上載者:User

標籤:def   child   include   for   max   amp   else   int   idt   

#include<stdio.h>#include<stdlib.h>#define SIZE 10typedef struct Tree {    int data;    struct Tree *left;    struct Tree *right;} tree;int find(tree *t,int x) {    int i=0;    if(t==NULL) {        return -1;    }    if(t->data==x) {        return i;    } else if(x<t->data) {        i++;        find(t->left,x);    } else if(x>t->data) {        i++;        find(t->right,x);    }}tree *findMin(tree *t) {    if(t==NULL) {        return NULL;    } else if(t->left==NULL) {        return t;    } else {        return findMin(t->left);    }}int findMax(tree *t) {    if(t!=NULL) {        while(t->right!=NULL) {            t=t->right;        }    }    return t->data;}tree *init(tree *t,int x) {    if(t==NULL) {        t=malloc(sizeof(tree));        t->data=x;        t->left=NULL;        t->right=NULL;        return t;    } else if(t->left ==NULL) {        t->left=init(t->left,x);        return t;    } else {        t->right=init(t->right,x);        return t;    }}tree *insertSort(tree *t,int x) {    if(t==NULL) {        t=malloc(sizeof(tree));        t->data=x;        t->left=NULL;        t->right=NULL;    } else if(x < t->data) {        t->left=insertSort(t->left,x);    } else if(x > t->data) {        t->right=insertSort(t->right,x);    }    return t;}tree *delete(tree *t,int x) {    tree *temp;    if(t==NULL) {        printf("error,element not found!");    } else if( x < t->data ) {/*go left*/        t->left=delete(t->left,x);    } else if( x > t->data ) {/*go right*/        t->right=delete( t->right,x );    } else if( t->left && t->right) { /*t->data==x and t has two children*/        temp=findMin( t->right );        t->data=temp->data;        t->right=delete( t->right,t->data );    } else {/*one or zero children */        temp=t;        if( t->left==NULL) {            t=t->right;        } else if( t->right == NULL ) {            t=t->left;        }        free(temp);    }    return t;}void preTravel(tree *t) {    if(t==NULL) {        return;    }    printf("%d ",t->data);    preTravel(t->left);    preTravel(t->right);}void midTravel(tree *t) {    if(t==NULL) {        return;    }    midTravel(t->left);    printf("%d ",t->data);    midTravel(t->right);}void postTravel(tree *t) {    if(t==NULL) {        return;    }    postTravel(t->left);    postTravel(t->right);    printf("%d ",t->data);}main() {    tree *t;    int i;    for(i=0; i<SIZE; i++) {        t=init(t,i);    }    preTravel(t);    printf("\n");    midTravel(t);    printf("\n");    postTravel(t);}

 

C語言實現常用資料結構——二叉樹

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.