zoukankan      html  css  js  c++  java
  • 二叉树建立和遍历

    二叉树创建遍历规则:

    1.先序:根-左-右

    2.中序:左-根-右

    3.后序:左-右-根


    二叉树定义和辅助函数例如以下:

    struct node {  
        int data;  
        struct node* left;  
        struct node* right;  
    };  
      
    void visit(int data)  
    {  
        printf("%d ", data);  
    }  
    
    int indata()
    {
        int data;
        scanf("%d",&data);
        return data;
    }




    先序创建二叉树:

    struct node* CreateBiTree()//先序建立一个二叉树  
    {   
        char x; //x为根节点  
        struct node* t;   
        x=indata();  
        if (x==' ') /* 推断当前子树是否创建完毕*/   
            return NULL;   
        else   
        {   
            t=(struct node*)malloc(sizeof(struct node));   
            t->data=x;   
            t->left=CreateBiTree();   
            t->right=CreateBiTree();   
        }   
        return t;  
    }  
    先序遍历二叉树:

    void preOrder(struct node* root)  
    {  
        if (root == NULL)  
            return;  
        visit(root->data);  
        preOrder(root->left);  
        preOrder(root->right);  
    }  
    



    中序创建二叉树:

    struct node* CreateBiTree()//先序建立一个二叉树  
    {   
        char x; //x为根节点  
        struct node* t;   
        x=indata();  
        if (x==' ') /* 推断当前子树是否创建完毕*/   
            return NULL;   
        else   
        {  
            t=(struct node*)malloc(sizeof(struct node)); 
            t->left=CreateBiTree();  
            t->data=x;     
            t->right=CreateBiTree();   
        }   
        return t;  
    }  
    中序遍历二叉树:

    void inOrder(struct node* root)  
    {  
        if (root == NULL)  
            return;  
        inOrder(root->left);  
        visit(root->data);  
        inOrder(root->right);  
    }  




    后序创建二叉树

    struct node* CreateBiTree()//先序建立一个二叉树  
    {   
        char x; //x为根节点  
        struct node* t;   
        x=indata();  
        if (x==' ') /* 推断当前子树是否创建完毕*/   
            return NULL;   
        else   
        {  
            t=(struct node*)malloc(sizeof(struct node)); 
            t->left=CreateBiTree();    
            t->right=CreateBiTree();   
        	t->data=x;   
        }   
        return t;  
    }  
    
    后序遍历二叉树

    void inOrder(struct node* root)  
    {  
        if (root == NULL)  
            return;  
        inOrder(root->left);   
        inOrder(root->right);  
        visit(root->data); 
    }  



    转载请注明作者:小刘





  • 相关阅读:
    ubuntu10官方镜像安装硬盘自动分区失败的问题
    ubuntu10的pci扩展卡驱动安装失败后检查方法
    day7集合
    day6字符编码
    day5 dict
    day4 list,tuple
    day2 int,bool,str
    day1
    函数一
    注册登录
  • 原文地址:https://www.cnblogs.com/jhcelue/p/7264331.html
Copyright © 2011-2022 走看看