关于数据结构和算法:数据结构与算法-C语言实现-前中后层序的递归非递归遍历

1.递归遍历

递归遍历非常简单,,,,,,

1.1前序遍历
void preOrderTraverse(BSTreeNode *root)
{
    if (root != NULL)
    {
        printf("%d \n", root->data);
        preOrderTraverse(root->left);
        preOrderTraverse(root->right);
    }
}
1.2中序遍历
void InOrderTraverse(BSTreeNode *root)
{
    if (root != NULL)
    {        
        InOrderTraverse(root->left);
        printf("%d \n", root->data);
        InOrderTraverse(root->right);
    }
}
1.3后序遍历
void PostOrderTraverse(BSTreeNode *root)
{
    if (root != NULL)
    {        
        PostOrderTraverse(root->left);
        PostOrderTraverse(root->right);
        printf("%d \n", root->data);
    }
}

2.非递归遍历

栈和队列的构建 详见其余博文

2.1前序遍历
void preOrderTraverseNR(BSTreeNode *root)
{
    //建设栈
    struct LinkedStack *Stack;
    Stack = initStack();
    while(NULL != root){
        printf("%d \n", root->data);
        if (NULL != root->right)
        {
            push(Stack, root->right);
        }
        if (NULL != root->left)
        {
            push(Stack, root->left);
        }
        root = pop(Stack);
    }
    free(Stack);
    Stack = NULL;
}

下周持续

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理