c_cpp 二叉树的前序,中序和后序遍历

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c_cpp 二叉树的前序,中序和后序遍历相关的知识,希望对你有一定的参考价值。

//二叉树抽象数据类型的头文件
typedef struct BiTreeNode_{
    void *data;
    struct BiTreeNode_ *left;
    struct BiTreeNode_ *right;
}BiTreeNode;

typedef struct BiTree_{
    int size;
    void (*compare)(const void *key1,const void *key2);
    void (*destroy)(void *data);
    BiTreeNode* root;
}BiTree;

//遍历二叉树的实现函数
/* 前序遍历 */
int preorder(const BiTreeNode *node){
    if(node){
        //对结点的处理函数
        printNode(node);
        if(node->left)
             if(perorder(node->left)!=0)
                   return -1;
        if(node->right)
             if(perorder(node->right)!=0)
                   return -1;
        return 0;
    }
}

/* 中序遍历 */
int inorder(const BiTreeNode *node){
    if(node){
        if(node->left)
             if(inorder(node->left)!=0)
                   return -1;

        //对结点的处理函数
        printNode(node);

        if(node->right)
             if(inorder(node->right)!=0)
                   return -1;
        return 0;
    }
}

/* 后序遍历 */
int postorder(const BiTreeNode *node){
    if(node){
        if(node->left)
             if(postorder(node->left)!=0)
                   return -1;
        if(node->right)
             if(postorder(node->right)!=0)
                   return -1;
        //对结点的处理函数
        printNode(node);
        return 0;
    }
}

以上是关于c_cpp 二叉树的前序,中序和后序遍历的主要内容,如果未能解决你的问题,请参考以下文章

非递归求二叉树的前序中序和后序遍历

已知二叉树的中序序列和后序序列,怎么求前序序列

中序和后序遍历构造二叉树

二叉树前序中序和后序遍历的非递归实现

已知一个二叉树的先序序列和中序序列,怎么求它的后序序列

[codevs1029]遍历问题