在二元树中找出和为某一值的所有路径

(回溯算法)

 1 typedef struct BiTNode
 2 {
 3   int data;
 4   BiTNode * lchild;
 5   BiTNode * rchild;
 6 }BiTNode, * BiTree;
 7 
 8 void Function( BiTree T, int sum )
 9 {
10   int path[ MAXSIZE ];
11   FindPath( T, sum, path, 0 );
12 }
13 
14 void FindPath( BiTree P, int sum, int path[], int top )
15 {
16   if( p )
17   {
18     sum -= P->data;  //sum按值传递
19     if( sum == 0 )
20     {
21       path[ top++ ] = P->data;
22       print( path, top );   //打印path数组top前的元素。top也是按值传递
23     }
24     else if( sum > 0 ) 
25     {
26       path[ top++ ] = p->data;
27       FindPath( P->lchild, sum,  path, top );
28       FindPath( P->rchild, sum,  path, top );
29     }
30   }
31 }

转载于:https://www.cnblogs.com/kevinGaoblog/archive/2012/04/04/2432099.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值