二叉树的初始化,以及遍历

参考以下链接:博主:

Landpack


https://www.baidu.com/link?url=chlFiQeDE-5yQno8EmpElsiryXEv8QgQd8_21E4UIYbq-g7WH_vKmyNKFPiHXtd4SZa_WZwzeT1WGLK_W_7-cK&wd=&eqid=8288c77500015031000000035b2b66a7

 

 

下面是我参考上面的理解:

#include  

#include  

 

struct binary_tree {  //定义结构体 

    int data    ;   // Data area

    struct binary_tree * left;

    struct binary_tree * right;

};

typedef struct binary_tree node; //定义结点 

void insert(node ** tree, int val) { //插入数据 

    node * temp = NULL;//临时变量 

    

二叉树的初始化,以及遍历

二叉树的初始化,以及遍历
 

 

if(!(*tree)) {// 树节点是否存在

        temp = (node *)malloc(sizeof(node));//申请空间 

        temp->left = temp->right = NULL;

        temp->data = val;

        *tree = temp;//每次从根结点开始, 

        return ;

    }

    

    if (val < (*tree)->data) {

        insert(&(*tree)->left,val);

    }else if (val > (*tree)->data) {

        insert(&(*tree)->right,val);

    }

}

void deltree(node * tree) {

    if(tree) {

        deltree(tree->left);

        deltree(tree->right);

        free(tree);

    }

}

void print_preorder(node * tree) {

    if(tree) {

        printf("%d\n",tree->data);

        print_preorder(tree->left);

        print_preorder(tree->right);

    }

}

 

void print_inorder(node * tree) {

    if(tree) {

        print_inorder(tree->left);

        printf("%d\n",tree->data);

        print_inorder(tree->right);

    }

}

 

void print_postorder(node * tree) {

    if(tree) {

        print_postorder(tree->left);

        print_postorder(tree->right);

        printf("%d\n",tree->data);

    }

}

int main(void)

{

    node * root;

    node * tmp;

    //int i;

 

    root = NULL;

   

    insert(&root,9);

    insert(&root,4);

    insert(&root,15);

    insert(&root,6);

    insert(&root,12);

    insert(&root,17);

    insert(&root,2);

 

    printf("Pre Order Display\n");

    print_preorder(root);

 

    printf("In Order Display\n");

    print_inorder(root);

 

    printf("Post Order Display\n");

    print_postorder(root);

 

 

   

    deltree(root);

}

  

  二叉树的初始化,以及遍历

 

  

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值