c语言二叉树简单创建与遍历

来源:互联网 发布:富士康java工程师面试 编辑:程序博客网 时间:2024/05/29 03:52
#include<stdio.h>#include<stdlib.h>typedef struct treeNode{    struct treeNode *leftptr;    int data;    struct treeNode *rightptr;    }TreeNode,*TreeNodeptr;void insert(TreeNodeptr *treeptr,int value){    if(*treeptr==NULL){        *treeptr=malloc(sizeof(TreeNode));        (*treeptr)->data=value;        (*treeptr)->leftptr=NULL;        (*treeptr)->rightptr=NULL;    }else{        if(value>(*treeptr)->data){            insert(&((*treeptr)->rightptr),value);        }        if(value<(*treeptr)->data){             insert(&((*treeptr)->leftptr),value);        }    }}void inorder(TreeNodeptr p){    if(p==NULL){        return;    }else{        inorder(p->leftptr);        printf("  %d",p->data);        inorder(p->rightptr);    }}void preorder(TreeNodeptr p){    if(p==NULL){        return;    }    else{        printf("   %d",p->data);        preorder(p->leftptr);        preorder(p->rightptr);    }}void postorder(TreeNodeptr p){    if(p==NULL){        return;    }    else{        postorder(p->leftptr);        postorder(p->rightptr);        printf("   %d",p->data);    }    }int main(){    TreeNodeptr rootptr=NULL;    int value,i;    printf("输入0结束\n输入1创建或者增加二叉树\n输入2中序遍历\n输入3先序遍历\n输入4后序遍历\n");    while(i!=0){        scanf("%d",&i);        switch(i){    case 1:         printf("输入值,负数结束");         scanf("%d",&value);        while(value>=0){        insert(&rootptr,value);        scanf("%d",&value);        }        break;    case 2:        inorder(rootptr);        break;    case 3:        preorder(rootptr);        break;    case 4:        postorder(rootptr);        break;        }    }      return 0;    }

 是
0 0
原创粉丝点击