zoukankan      html  css  js  c++  java
  • c语言(二叉树的操作)

    #include "stdio.h"
    #include "malloc.h"
    #include "stdlib.h"
    typedef struct BTNode
    {
        int data;
        struct BTNode *Lchild,*Rchild;
    }BTree;
    //初始化
    BTree * Ini_BTNode()
    {
        BTree *bt ;
        int a;
        bt=(BTree *)malloc(sizeof(BTree));
        printf("输入根节点:(0表示空树)
    ");
        scanf("%d",&a);
        if(a==0)
        {
            printf("这是空树!");
            exit(0);
        }
        bt->data=a; 
        bt->Lchild=NULL;  //左子树节点 
        bt->Rchild=NULL;  //右子树节点 
        return bt;
    } 
    creat_BiTree(BTree *bt)//输入左子树 
    {
           
          int a;
          BTree *Node;
          printf("请输入%d节点的左孩子(0为空)
    ",bt->data) ;
          scanf("%d",&a);
          if(a!=0)
          {
                  Node=(BTree*)malloc(sizeof(BTree));
                  Node->data=a;
                  Node->Lchild=NULL;
                  Node->Rchild=NULL;
                  bt->Lchild=Node;
                  creat_BiTree(bt->Lchild);
                    
          } 
          printf("请输入%d节点的右孩子(0为空)
    ",bt->data) ; //输入右子树
          scanf("%d",&a);
          if(a!=0)
          {
                  Node=(BTree *)malloc(sizeof(BTree));
                  Node->data=a;
                  Node->Lchild=NULL;
                  Node->Rchild=NULL;
                  bt->Rchild =Node;
                  creat_BiTree(bt->Rchild);
                    
          }
          
          return 0;
          
          
    }
    void PerOrderTraverse(BTree *bt) //先序遍历
    {
        if(bt!=NULL)
       { printf("%d -->",bt->data);
         PerOrderTraverse(bt->Lchild); 
         PerOrderTraverse(bt->Rchild);            
       }
    }
    void InOrderTraverse(BTree *bt) //中序遍历 
    {
        if(bt!=NULL)
       { 
         InOrderTraverse(bt->Lchild);
         printf("%d -->",bt->data); 
         InOrderTraverse(bt->Rchild);            
       }
    }
    void PostOrderTraverse(BTree *bt) //后序遍历 
    {
        if(bt!=NULL)
       { 
         PostOrderTraverse(bt->Lchild);
         PostOrderTraverse(bt->Rchild); 
         printf("%d -->",bt->data);            
       }
    }      
    
    
     
    main()
    {
        BTree  *bt;
        int a;
        printf("		****************  二叉树操作  ****************
    
    ");
        bt=Ini_BTNode();creat_BiTree(bt);
        printf("以%d为根的树创建成功!
    ",bt->data);
        system("pause"); 
        system("cls");
        while(1)
        {
    
            system("cls");
            printf("		1. 先序遍历
    ");
            printf("		2. 中序遍历
    ");
            printf("		3. 后序遍历
    ");
            printf("		4. 退出程序
    ");
            printf("	请选择:");
            scanf("%d",&a);
            switch(a)
            {
             case 1:printf("先序遍历
    ");
                    PerOrderTraverse(bt);   
                    printf("
    ");
                    system("pause"); break;
             case 2:printf("中序遍历
    ");
                     InOrderTraverse(bt);
                     printf("
    ");
                    system("pause"); break;
                 
    
             case 3:printf("后序遍历
    ");
                     PostOrderTraverse(bt);
                     printf("
    ");
                    system("pause"); break;
             case 4:exit(0); 
             default:printf("输入错误");
            }
        
         } 
      system("pause");  
    }

     

  • 相关阅读:
    Storm概念学习系列之storm出现的背景
    Storm概念学习系列之什么是实时流计算?
    Storm概念学习系列之storm-starter项目(完整版)(博主推荐)
    JAVA 毕业设计 辅导
    可视化的Redis数据库管理工具redis-desktop-manager的初步使用(图文详解)
    CentOS 7的安装详解
    GT-----如何做Android应用流量测试?
    性能测试开始前必知知识点
    【UI】自动化用例设计技巧
    国外免费接收短信验证码平台网站
  • 原文地址:https://www.cnblogs.com/doublekai/p/6755483.html
Copyright © 2011-2022 走看看