在二元树中找出和为某一值的所有路径
(回溯算法)
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 }
**************************************************************
我喜欢程序员,他们单纯、固执、容易体会到成就感;面对困难,能够不休不眠;面对压力,能够迎接挑战。他们也会感到困惑与傍徨,但每个程序员的心中都有一个比尔盖茨或是乔布斯的梦想,用智慧把属于自己的事业开创。其实我是一个程序员[=.=]
我喜欢程序员,他们单纯、固执、容易体会到成就感;面对困难,能够不休不眠;面对压力,能够迎接挑战。他们也会感到困惑与傍徨,但每个程序员的心中都有一个比尔盖茨或是乔布斯的梦想,用智慧把属于自己的事业开创。其实我是一个程序员[=.=]