/* 二叉树的前中后序遍历 */
#include <stdio.h>
#include <stdlib.h>
typedef struct treeNode *BinTree;
typedef struct stackNode *Stack;
/* 二叉树的描述结构 */
struct treeNode
{
int data;
struct treeNode *left;
struct treeNode *right;
};
/* 栈的结构 */
struct stackNode
{
BinTree node;
struct stackNode *next;
};
/* 链表实现堆栈 */
Stack createStack(){
Stack stack = (Stack)malloc(sizeof(struct stackNode));
stack->next = NULL;
return stack;
}
/* 判断栈是否为空 */
int stackIsEmpty(Stack stackTop){
if (stackTop->next)
return 0;
return 1;
}
/* 压栈 */
void stackPush(Stack stackTop, BinTree myNode){
if (myNode)
{
Stack midNode = (Stack)malloc(sizeof(struct stackNode));
midNode->node = myNode;
midNode->next = stackTop->next;
stackTop->next = midNode;
}
}
/* 出栈 */
BinTree stackPop(Stack stackTop){
if (stackIsEmpty(stackTop))
{
printf("Stack is empty!\n");
return NULL;
}
BinTree mid = stackTop->next->node
【C语言】用链表实现的堆栈来实现二叉树的前中后序遍历
最新推荐文章于 2021-11-14 21:34:53 发布
本文介绍如何使用C语言通过链表和堆栈来实现二叉树的前序、中序和后序遍历。通过详细步骤和代码示例,深入理解数据结构在解决树形问题中的应用。

最低0.47元/天 解锁文章
1813

被折叠的 条评论
为什么被折叠?



