小螞蟻學習數據結構(26)——題目——輸出二叉樹上值大於x的算法

題目要求:    算法

    設二叉樹以二叉鏈表的形式存儲,有關類型定義以下:
spa

typedef struct BiTNode{.net

    int data;
指針

    struct BiTNode * lchild, * rchild;
code

}BiTNode, * BiTree;blog

下面是求輸出二叉樹上值大於x的類_C算法,請填空內存

void Print_Big_Value(BiTree T,int x);    //T 是二叉樹的根節點的指針ci

/*
	輸出二叉樹上值大於x的類c算法
*/
# include <stdio.h>
# include <malloc.h>

# define OK 1
# define ERROR 0

typedef struct BiTNode
{
	int data;
	struct BiTNode * lchild;
	struct BiTNode * rchild;
}BiTNode, * BiTree;

//建立二叉樹
void CreateTree( BiTree & );
//中序遍歷二叉樹
void InOrderTraveler( BiTree &, int );

void CreateTree( BiTree & T )
{
	int data;
	scanf( "%d", &data );
	
	/*
		由於此次的數據域須要輸入數字,忘了數字之間是須要空格分割的,
		因此出了一點差錯。記得要以空格分割。
	*/
	if( 0 == data )
	{
		T = NULL;
	}
	else
	{
		T = ( BiTree )malloc( sizeof( BiTNode ) );
		if( NULL == T )
		{
			printf( "動態內存分配失敗\n" );
			return;
		}
		T -> data = data;
		CreateTree( T -> lchild );
		CreateTree( T -> rchild );
	}
}
 
/*
	中序遍歷二叉樹,
	遍歷結點的時候,判斷是否大於或小於某個值,而後依照判斷輸出
*/
void InOrderTraveler( BiTree &T, int i )
{
	if( NULL != T )
	{
		InOrderTraveler( T -> lchild, i );
		if( T->data > i )
		{
			printf( "%d ", T->data );
		}			
		InOrderTraveler( T -> rchild, i );
	}
}

int main( void )
{
	BiTree Tree;
	int i = 10;
	
	printf( "建立一顆二叉樹,注意數字間的空格:\n" );
	CreateTree( Tree );
	
	printf( "大於%d的節點爲:\n", i );
	InOrderTraveler( Tree, i );
	
	printf( "\n" );
	
	return 0;
}
/*
	VC++6.0的輸出結果是:
	=====================================
	建立一顆二叉樹,注意數字間的空格:
	23 43 0 0 2 0 0
	大於10的節點爲:
	43 23
	=====================================
	總結:
		之前寫過不少遍,都是數據域保存的都是字符,今天忽然換成了
		數字,給完了添加空格做爲分割。
		切記,數字間的分割。
*/


    學PHP的小螞蟻 博客 http://my.oschina.net/woshixiaomayi/blogget

相關文章
相關標籤/搜索