您的位置:首页 > 其它

JD 1368:二叉树中和为某一值的路径

2014-06-20 21:46 260 查看
OJ题目:click here~~

题目分析:找[b]二叉树中和为某一值的路径。。。[/b]

[b]剑指offer 面试题25[/b]

[b]AC_CODE[/b]

const int maxn = 10008 ;
int n , k ;
struct Node{
int x ;
int l , r ;
Node():l(-1),r(-1){}
}tree[maxn];

void FindPath(int t , int sum , vector<int> &path){
if(tree[t].l == -1 && tree[t].r == -1 ){
if(sum + tree[t].x == k){
path.push_back(t) ;
printf("A path is found:") ;
for(int i = 0;i < path.size();i++)
printf(" %d" , path[i]) ;
puts("") ;
path.pop_back() ;
}
return ;
}
else{
if(sum + tree[t].x >= k) return ;
else{
path.push_back(t) ;
FindPath(tree[t].l , sum + tree[t].x , path) ;
FindPath(tree[t].r , sum + tree[t].x , path) ;
path.pop_back() ;
}
}
}

int main(){
while(cin >> n >> k){

int i , w , l , r ;
for(i = 1;i <= n;i++){
scanf("%d%d%d" , &w , &l , &r) ;
tree[i].x = w ;
tree[i].l = min(l , r) ;
tree[i].r = max(l , r) ;
}
vector<int> path ;
puts("result:") ;
FindPath(1 , 0 , path) ;
}
return 0 ;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: