⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 stack先序遍历.c

📁 编写程序
💻 C
字号:
#include <stdio.h>
#include <malloc.h>
#include <stdlib.h>

typedef char DataType;
#include "BiTree.h"
#include "BiTreeTraverse.h"

typedef BiTreeNode SDataType;
#include "LinStack.h"

void PrintData(DataType item)
{	
	printf("%c ",item);
}

void StackOrder(BiTreeNode *t,LSNode *s,void Visit(DataType item))
{	
	BiTreeNode ttemp;
	int count=0;
	
	StackPush(s,*t);
	count++;
	
	do
	{	
		StackPop(s,&ttemp);
		Visit(ttemp.data);
		count--;
		
		if(ttemp.rightChild!=NULL)
		{	
			StackPush(s,*ttemp.rightChild);
			count++;
		}
		if(ttemp.leftChild!=NULL)
		{	
			StackPush(s,*ttemp.leftChild);
			count++;
		}
	} while(count>0);
}

void main(void)
{	
	BiTreeNode *tree,*p,*pp;
	LSNode *stack;
	
	StackInitiate(&stack);
	BiTreeInitiate(&tree);
	
	printf("本题算法结果\n ");

/*创建课本P165图7-10(b)结构的树*/
	p=InsertLeftNode(tree,'A');
	p=InsertLeftNode(p,'B');
	p=InsertLeftNode(p,'D');
	p=InsertRightNode(p,'G');
	p=InsertRightNode(tree->leftChild,'C');
	pp=p;
	InsertLeftNode(p,'E');
	InsertRightNode(pp,'F');

	PrintBiTree(tree,0);

	printf("堆栈遍历结果\n ");
	StackOrder(tree->leftChild,stack,PrintData); //创建的树附带头节点
	
	printf("\n先序遍历结果 ");	
	PreOrder(tree->leftChild,PrintData);  //采用递归算法的先序遍历运算对比结果
	
	printf("\n中序遍历结果 ");	
	InOrder(tree->leftChild,PrintData);  //递归中序遍历
	
	printf("\n后序遍历结果 ");	
	PostOrder(tree->leftChild,PrintData);  //递归后序遍历
	
	BiTreeDestroy(&tree);
	StackDestroy(&stack);
	
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -