数据结构>>>树状结构>>链式二叉树

链式二叉树:

遍历:

  • 前序
  • 中序
  • 后序

下面是具体实现:

1.前序遍历:

void PreTraverseLTree(struct LTNode *pT)
{
	if(pT!=NULL)
	{
		cout<<pT->data<<'\t';
		if(pT->pLchild!=NULL)
			PreTraverseLTree(pT->pLchild);
		if(pT->pRchild !=NULL)
		    PreTraverseLTree(pT->pRchild);
	}
}

2.中序遍历:

void InTraverseLTree(struct LTNode *pT)
{
	if(pT!=NULL)
	{
		if(pT->pLchild!=NULL)
			InTraverseLTree(pT->pLchild);
		cout<<pT->data<<'\t';
		if(pT->pRchild !=NULL)
		    InTraverseLTree(pT->pRchild);
	}
}

3.后序遍历:

void PostTraverseLTree(struct LTNode *pT)
{
	if(pT!=NULL)
	{
		if(pT->pLchild!=NULL)
			PostTraverseLTree(pT->pLchild);
		if(pT->pRchild !=NULL)
		    PostTraverseLTree(pT->pRchild);
		cout<<pT->data<<'\t';
	}
}

------》源代码:

#include<iostream>
#include<malloc.h>
using namespace std;

//结构描述:
struct LTNode
{
	char data;
	struct LTNode *pLchild;
	struct LTNode *pRchild;
};

//初始化:
struct LTNode *CreatLTree()
{
	struct LTNode *pA=(struct LTNode *)malloc(sizeof(struct LTNode ));
	struct LTNode *pB=(struct LTNode *)malloc(sizeof(struct LTNode ));
	struct LTNode *pC=(struct LTNode *)malloc(sizeof(struct LTNode ));
	struct LTNode *pD=(struct LTNode *)malloc(sizeof(struct LTNode ));
	struct LTNode *pE=(struct LTNode *)malloc(sizeof(struct LTNode ));

	pA->data='A';
	pB->data='B';
	pC->data='C';
	pD->data='D';
	pE->data='E';

	pA->pLchild =pB;
	pA->pRchild=pC;
	pB->pLchild=pB->pRchild=NULL;
	pC->pLchild=pD;
	pC->pRchild=NULL;
	pD->pLchild =NULL;
	pD->pRchild=pE;
	pE->pLchild=pE->pRchild=NULL;
	return pA;
};

//1.前序遍历:
void PreTraverseLTree(struct LTNode *pT)
{
	if(pT!=NULL)
	{
		cout<<pT->data<<'\t';
		if(pT->pLchild!=NULL)
			PreTraverseLTree(pT->pLchild);
		if(pT->pRchild !=NULL)
		    PreTraverseLTree(pT->pRchild);
	}
}

//2.中序遍历:
void InTraverseLTree(struct LTNode *pT)
{
	if(pT!=NULL)
	{
		if(pT->pLchild!=NULL)
			InTraverseLTree(pT->pLchild);
		cout<<pT->data<<'\t';
		if(pT->pRchild !=NULL)
		    InTraverseLTree(pT->pRchild);
	}
}

//3.后序遍历:
void PostTraverseLTree(struct LTNode *pT)
{
	if(pT!=NULL)
	{
		if(pT->pLchild!=NULL)
			PostTraverseLTree(pT->pLchild);
		if(pT->pRchild !=NULL)
		    PostTraverseLTree(pT->pRchild);
		cout<<pT->data<<'\t';
	}
}

int main()
{
	struct LTNode *pT=CreatLTree();
	cout<<"前序遍历:"<<endl;
	PreTraverseLTree(pT);
	cout<<endl;
	cout<<"中序遍历:"<<endl;
	InTraverseLTree(pT);
	cout<<endl;
	cout<<"后序遍历:"<<endl;
	PostTraverseLTree(pT);
	cout<<endl;
	return 0;
}

树中最常见的结构就是二叉树结构了,因为其独特的结构和存储方式在今后很多
的算法设计中都有涉及,应用范围也很广。这里给大家介绍的是二叉树最基础的链式遍历,在今后还会有很多拓展和应用,那些是相对比较复杂的内容。还有在树的遍历时,我们一般采用递归算法(虽然效率低,但设计简洁啊!)。

猜你喜欢

转载自blog.csdn.net/qq_43595030/article/details/90746682