下面的代码是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,在这里我们是否可以停止一切并只打印堆栈(即清空它)......