題目要求: 算法
設二叉樹以二叉鏈表的形式存儲,有關類型定義以下:
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