BEI-TIAN-XUAN 2021-03-06 17:16 采纳率: 66.7%
浏览 42

二叉树非递归中序遍历?

我用vs2019实现C语言二叉树非递归中序遍历时,遍历时(InOrderTraverse(BiTree T))函数中打印没实现。

问题代码:

Status InOrderTraverse(BiTree T)  //非递归中序遍历
{
	BiTree P;
	SqStack S;
	InitStack(&S);
	P = T;
	while (P || !StackEmpty(S))
	{
		while (P)
		{
			Push(&S,P);
			P = P->lchild;
		}
	    if (!StackEmpty(S))
		{
			Pop(&S, &P);
			printf("%c", P->data);
			P = P->rchild;
		}
	}
	return OK;
}

完整源码:

#include<stdio.h>
#include<stdlib.h>
#define MaxSize 100
#define OK 1
#define ERROR 0
typedef char ElemType;
typedef int Status;
typedef struct {
	ElemType* base;
	ElemType* top;
	int StackSize;
}SqStack; //顺序栈
Status InitStack(SqStack* S)  //初始化
{
	S->base = (ElemType*)malloc(sizeof(ElemType) * MaxSize);
	if (!S->base)
		exit(0);
	S->top = S->base;
	S->StackSize = MaxSize;
	return OK;
}
Status StackEmpty(SqStack S)  //判断是否为空栈
{
	if (S.base == S.top)
		return OK;
	else
		ERROR;
}
Status Push(SqStack* S, ElemType e)  //入栈
{
	if (!S->base)
		return ERROR;
	*(S->top) = e;
	S->top++;
	return OK;
}
Status Pop(SqStack* S, ElemType* e)  //出栈
{
	if (S->base == S->top)
		return ERROR;
	*e = *(S->top - 1);
	S->top--;
	return OK;
}
typedef struct BiNode {
	ElemType data;
	struct BiNode* lchild, * rchild;
}BiNode, * BiTree;
Status Create_BiTree(BiTree *T)  //初始化二叉树
{
	char ch;
	scanf("%c", &ch);
	if (ch == '#')
	{
		*T = NULL;
	}
	else
	{
		*T = (BiTree)malloc(sizeof(BiNode));
		(*T)->data = ch;
		Create_BiTree(&(*T)->lchild);
		Create_BiTree(&(*T)->rchild);
	}
	return OK;
}
Status InOrderTraverse(BiTree T)  //非递归中序遍历
{
	BiTree P;
	SqStack S;
	InitStack(&S);
	P = T;
	while (P || !StackEmpty(S))
	{
		while (P)
		{
			Push(&S,P);
			P = P->lchild;
		}
	    if (!StackEmpty(S))
		{
			Pop(&S, &P);
			printf("%c", P->data);
			P = P->rchild;
		}
	}
	return OK;
}
int main()
{
	BiTree T;
	printf("请输入字符(#表示空指针):");
	Create_BiTree(&T);
	printf("非递归遍历:");
	InOrderTraverse(T);

	return 0;
}
  • 写回答

1条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2022-09-07 16:39
    关注
    不知道你这个问题是否已经解决, 如果还没有解决的话:

    如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 以帮助更多的人 ^-^
    评论

报告相同问题?

悬赏问题

  • ¥15 有人知道怎么将自己的迁移策略布到edgecloudsim上使用吗?
  • ¥15 错误 LNK2001 无法解析的外部符号
  • ¥50 安装pyaudiokits失败
  • ¥15 计组这些题应该咋做呀
  • ¥60 更换迈创SOL6M4AE卡的时候,驱动要重新装才能使用,怎么解决?
  • ¥15 让node服务器有自动加载文件的功能
  • ¥15 jmeter脚本回放有的是对的有的是错的
  • ¥15 r语言蛋白组学相关问题
  • ¥15 Python时间序列如何拟合疏系数模型
  • ¥15 求学软件的前人们指明方向🥺