【C语言】用链表实现的堆栈来实现二叉树的前中后序遍历

本文介绍如何使用C语言通过链表和堆栈来实现二叉树的前序、中序和后序遍历。通过详细步骤和代码示例,深入理解数据结构在解决树形问题中的应用。
摘要由CSDN通过智能技术生成
/* 二叉树的前中后序遍历 */

#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;
	Stack willFree = stack
  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值