妙趣橫生的算法實例1-6

我想這道題時,一直想不到該怎麼樣使從下一層返回上一層時,上一層數不變,因爲我想在遍歷裏面定義一個變量,怎麼也行不通,看了書上是又多傳進來一個參數,這個問題就迎刃而解了。

#include <stdio.h>
#include <malloc.h>

typedef struct biTNode
{
	char data;
	struct biTNode *lChild, *rChild;
}biTNode, *biTree;

void preOrderTraverse(biTree T, int level)
{
	if(T)
	{
		if(T->data == 'D')
		{
			printf("D 在第%d層.\n", level);
			return;
		}
		
		preOrderTraverse(T->lChild, level + 1);
		preOrderTraverse(T->rChild, level + 1);
	}
}

void createBiTree(biTree *T)
{
	char c;
	scanf("%c", &c);
	if(c == ' ') *T = NULL;
	else
	{
		*T = (biTree)malloc(sizeof(biTNode));
		if(!(*T)) return;
		(*T)->data = c;
		createBiTree(&((*T)->lChild));
		createBiTree(&((*T)->rChild));
	}
}

void main()
{
	int level = 1;
	biTree binaryTree;
	printf("請輸入二叉樹:\n");
	createBiTree(&binaryTree);
	preOrderTraverse(binaryTree, level);
}

運行結果如下:


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章