题目要求: 算法
设二叉树以二叉链表的形式存储,有关类型定义以下:
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