树的遍历(递归)

1. 先序遍历:

1.1 遍历过程为:

1) 访问根结点

2) 先序遍历其左子树

3) 中序遍历其右子树

<span style="font-size:18px;"><span style="font-size:18px;">void PreOrderTraversal(BinTree BT)
{
	if(BT)
	{
		printf("%d", BT->Data);
		PreOrderTraversal(BT->Left);
		PreOrderTraversal(BT->Right);
	}
}</span></span>

A  (B D F E)  (C G H I)

先序遍历 =>  A B D F E C G H I


2. 中序遍历:

2.1 遍历过程为:

1) 中序遍历其左子树

2) 访问根结点

3) 中序遍历其右子树

<span style="font-size:18px;">void InOrderTraversal(BinTree BT)
{
	if(BT)
	{
		InOrderTraversal(BT->Left);
		printf("%d", BT->Data);
		InOrderTraversal(BT->Right);
	}
}</span>
树的遍历(递归)_第1张图片
(D B E F) A (G HC I)

中序遍历 => D B E F A G H C I


3. 后序遍历:

3.1 遍历过程为:

1) 后遍历其左子树

2) 后遍历其右子树;

3) 访问根结点。

<span style="font-size:18px;">void PostOrderTraversal(BinTree BT)
{
	if(BT)
	{
		PostOrderTraversal(BT->Left);
		PostOrderTraversal(BT->Right);
		printf("%d", BT->Data);
	}
}</span>
树的遍历(递归)_第2张图片

(D E F B) (H G IC ) A

后序遍历: D E F B H G I C A

树的遍历(递归)_第3张图片

你可能感兴趣的:(树的遍历(递归))