小蚂蚁学习数据结构(26)——题目——输出二叉树上值大于x的算法

本文介绍了一个使用C语言实现的算法,该算法通过中序遍历的方式,在二叉树中找出所有值大于指定数值x的节点,并将其值输出。文章还提供了完整的代码示例及运行结果。

题目要求:    

    设二叉树以二叉链表的形式存储,有关类型定义如下:

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



转载于:https://my.oschina.net/woshixiaomayi/blog/611503

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值