1. 程式人生 > 實用技巧 >二叉樹遞迴遍歷—黑馬張濤講師

二叉樹遞迴遍歷—黑馬張濤講師

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

typedef struct BinaryNode //二叉樹結點 
{
	//資料域 
	char data;
	//指標域 
	struct BinaryNode * lChild;  //左孩子 
	struct BinaryNode * rChild;  //右孩子 
}BiNode; 
void recursion(BiNode * root)
{
	//終止條件
	if(NULL == root)
	{
		return;
	} 
	
	
	//先序遍歷
	printf("%c ", root->data); 
	recursion(root->lChild); 
	recursion(root->rChild);
	
	/*
	中序遍歷
	recursion(root->lChild); 
	printf("%c ", root->data); 
	recursion(root->rChild);
	*/
	
	/*
	後序遍歷
	recursion(root->lChild); 
	recursion(root->rChild);
	printf("%c ", root->data); 
	*/ 
} 

void test01()
{
	//對成員初始化 
	BiNode nodeA = {'A', NULL, NULL};
	BiNode nodeB = {'B', NULL, NULL};
	BiNode nodeC = {'C', NULL, NULL};
	BiNode nodeD = {'D', NULL, NULL};
	BiNode nodeE = {'E', NULL, NULL};
	BiNode nodeF = {'F', NULL, NULL};
	BiNode nodeG = {'G', NULL, NULL};
	BiNode nodeH = {'H', NULL, NULL};
	
	//建立關係 
	nodeA.lChild = &nodeB;
	nodeA.rChild = &nodeF;
	
	nodeB.rChild = &nodeC;
	
	nodeC.lChild = &nodeD;
	nodeC.rChild = &nodeE;
	
	nodeF.rChild = &nodeG;
	
	nodeG.lChild = &nodeH;
	
	//遞迴遍歷
	recursion(&nodeA); //傳入樹根 
	 
}
int main()
{
	test01();
	
	return 0;
}