树的遍历:
如上图所示:
先序遍历(DLR):
先访问根 再访问左 再就是右:ABCDEFGH
中序遍历(LDR):
先左再根再右:BDCCEAFHG
后序遍历(LRD):
先左再右再根:DECBHGFA
递归遍历(先序遍历):

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
#include<string>
//二叉树结点
typedef struct BINARYNODE{
	char ch;
	struct BINARYNODE *lchild;
	struct BINARYNODE *rchild;
}BinaryNode;

//递归遍历
void Recursion(BinaryNode*root){
	if (root == NULL)
	{
		return;
	}
	//先访问根结点
	printf("%c", root->ch);
	//再访问左子树
	Recursion(root->lchild);
	//再访问右子树
	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;
	//递归遍历
	Recursion(&node1);
	printf("\n");
}


int main(void){

	CreateBinaryTree();
	system("pause");
	return 0;
}

其它2个,只需要将递归函数中顺序变换就可以实现。

相关文章: