【发布时间】:2013-05-18 19:43:21
【问题描述】:
下面的代码是to find the path in a tree that adds up to a given sum...我在这里做的是enqueue所有节点的值到一个数组path中,如果条件满足递归打印它......
void checkSum(NODE* root, int path[], int len, int sum){
if(root == NULL) return;
path[len] = root->data;
len++;
if(sum - root->data == 0){
sum -= root->data;
cout<<"\nSum equals...";
printPaths(path, len);
}
else if(sum - root->data > 0){
sum -= root->data;
checkSum(root->left, path, len, sum);
checkSum(root->right, path, len, sum);
}else { return; }
}
我想知道的是,有没有其他方法可以在不使用任何数据结构的情况下打印路径(至少一个)???
类似这样的......
void checkSum_second(NODE* root, int sum){
if(root == NULL) return;
if(sum - root->data == 0) {
//do something
}
else if(sum - root->data > 0){
sum -= root->data;
}else return;
checkSum_second(root->left, sum);
checkSum_second(root->right, sum);
cout<<"\nvalue..."<<root->data;
}
考虑一棵树
1
2 3
4 5 6 7
如果sum = 7 checkSum_second(root->left, sum); 被执行三次,即直到节点 4,在这里我们是否可以停止一切并只打印堆栈(即清空它)......
【问题讨论】:
标签: c++ data-structures recursion