二叉树先序中序递归与迭代遍历实现

二叉树先序中序递归与迭代遍历实现

代码

#include <stdio.h>
#include <stdlib.h>

typedef struct BINARYNODE
{
	char ch;
	struct BINARYNODE *lchild;
	struct BINARYNODE *rchild;
}BinaryNode;

//先序(递归)
void Recursion1(BinaryNode *root)
{
	if(root == NULL)
	{
		return;
	}
	printf("%c",root->ch);
	Recursion(root->lchild);
	Recursion(root->rchild);
}
//先序(非递归) 
void Porderf(BinaryNode *root)
{
	int top=0; 
	BinaryNode *p, *s[10];
	p=root;
	while (p || top)
	{
		while (p!=NULL)
		{
			printf("%c\t",p->ch);
			s[top++]=p;
			p=p->lchild;
		}
		if(top>0)
		{
			p=s[--top];
			p=p->rchild;
		}
	}
}
//中序(非递归) 
void inorderf(BinaryNode *root)
{
	int top=0; 
	BinaryNode *p, *s[10];
	p=root;
	while (p || top)
	{
		while (p!=NULL)
		{
			s[top++]=p;
			p=p->lchild;
		}
		if(top>0)
		{
			p=s[--top];
			printf("%c",p->ch);
			p=p->rchild;
		}
	}
}
//中序(递归) 
void Recursion2(BinaryNode *root)
{
	if(root == NULL)
	{
		return;
	}
	Recursion(root->lchild);
	printf("%c",root->ch);
	Recursion(root->rchild);
}

void CreateBinaryTree()
{
	BinaryNode node1 = {'A',NULL,NULL};
	BinaryNode node2 = {'B',NULL,NULL};
	BinaryNode node3 = {'C',NULL,NULL};
	BinaryNode node4 = {'D',NULL,NULL};
	BinaryNode node5 = {'E',NULL,NULL};
	BinaryNode node6 = {'F',NULL,NULL};
	BinaryNode node7 = {'G',NULL,NULL};
	BinaryNode node8 = {'H',NULL,NULL};
	
	node1.lchild = &node2;
	node1.rchild = &node6;
	node2.rchild = &node3;
	node3.lchild = &node4;
	node3.rchild = &node5;
	node6.rchild = &node7;
	node7.lchild = &node8;
	
	Porderf(&node1);//先序(递归)
//	Recursion1(&node1);//先序(非递归) 
//	inorderf(&node1);//中序(非递归)
//	Recursion2(&node1);//中序(递归)
}

int  main()
{
	CreateBinaryTree();
	return 0;
}

二叉树参考
在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值