本文主要是介绍JD 1368:二叉树中和为某一值的路径,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
OJ题目:click here~~
题目分析:找二叉树中和为某一值的路径。。。
剑指offer 面试题25
AC_CODE
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 ;
}
这篇关于JD 1368:二叉树中和为某一值的路径的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!