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); 
    }  



    转载请注明作者:小刘





  • 相关阅读:
    1451. Rearrange Words in a Sentence
    1450. Number of Students Doing Homework at a Given Time
    1452. People Whose List of Favorite Companies Is Not a Subset of Another List
    1447. Simplified Fractions
    1446. Consecutive Characters
    1448. Count Good Nodes in Binary Tree
    709. To Lower Case
    211. Add and Search Word
    918. Maximum Sum Circular Subarray
    lua 时间戳和时间互转
  • 原文地址:https://www.cnblogs.com/jhcelue/p/7264331.html
Copyright © 2011-2022 走看看