题目要求:
设二叉树以二叉链表的形式存储,有关类型定义如下:
typedef struct BiTNode{
int data;
struct BiTNode * lchild, * rchild;
}BiTNode, * BiTree;
下面是求输出二叉树上值大于x的类_C算法,请填空
void Print_Big_Value(BiTree T,int x); //T 是二叉树的根节点的指针
/*
输出二叉树上值大于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/blog