数据结构C语言版二叉树的结构和遍历的实现

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据结构C语言版二叉树的结构和遍历的实现相关的知识,希望对你有一定的参考价值。

数据结构【C语言版】二叉树的结构和遍历的实现

1.二叉树的存储结构

  • 链式存储

  • //代码展示
    //二叉链
    typedef int BTDateType;
    
    typedef struct BinaryTreeNode
    
    	BTDateType date;
    	struct BinaryTreeNode* left;//指向左孩子
    	struct BinartTreeNode* right;//指向右孩子
    BTNode;
    //三叉链
    typedef struct BinaryTreeNode
    
    	BTDateType date; //指向该节点的数据
    	struct BinaryTreeNode* parent;//指向该节点的双亲
    	struct BinaryTreeNode* left;//指向左孩子
    	struct BinaryTreeNode* right;//指向右孩子
    BTNode;
    

    2.二叉树的遍历

    前序遍历:

    typedef int BTDateType;
    typedef struct BinaryTreeNode
    
    	BTDateType date;
    	struct BinaryTreeNode* left;
    	struct BinartTreeNode* right;
    BTNode;
    
    void PreOrder(BTNode* root)
    
        if(root == NULL)
        
            printf("NULL ");
            return;       
         
        printf("%d ",root->date);//先访问根
        PreOrder(root->left);//再访问左子树
        PreOrder(root->right);//最后访问右子树   
    
    
    • 前序遍历的特点是第一个一定是根!

    中序遍历

    typedef int BTDateType;
    typedef struct BinaryTreeNode
    
    	BTDateType date;
    	struct BinaryTreeNode* left;
    	struct BinartTreeNode* right;
    BTNode;
    
    void InOrder(BTNode* root)
    
        if (root == NULL)
        
            printf("NULL ");
            return;
        
        PreOrder(root->left);//先访问左子树
        printf("%d ", root->date);//再访问根
        PreOrder(root->right);//最后访问右子树   
    
    
    • 中序遍历的特点是知道根的位置就可以判断出左右子树!

    后序遍历

    typedef int BTDateType;
    typedef struct BinaryTreeNode
    
    	BTDateType date;
    	struct BinaryTreeNode* left;
    	struct BinartTreeNode* right;
    BTNode;
    
    void PostOrder(BTNode* root)
    
        if (root == NULL)
        
            printf("NULL ");
            return;
        
        PreOrder(root->left);//先访问左子树
        PreOrder(root->right);//然后访问右子树   
        printf("%d ", root->date);//最后访问根
    
    
    

    以上是关于数据结构C语言版二叉树的结构和遍历的实现的主要内容,如果未能解决你的问题,请参考以下文章

    数据结构 Java 版二叉树的实现(超多图超详解)

    数据结构 Java 版二叉树的实现(超多图超详解)

    数据结构C语言版——链式二叉树的基本操作实现

    数据结构C语言版——链式二叉树的基本操作实现

    二叉树的存储结构及四种遍历(C语言)

    二叉树层次遍历(包含C语言实现代码)