这个问题在模拟面试中被问到了......真的很惊讶地找到了尴尬的答案......
考虑一个宏:
#define SQR(x) (x*x)
Run Code Online (Sandbox Code Playgroud)
例1:
SQR(2) //prints 4
Run Code Online (Sandbox Code Playgroud)
例2:
如果给出SQR(1 + 1),它不会求和(1+1)
,2
而是......
SQR(1+1) //prints 3
Run Code Online (Sandbox Code Playgroud)
尴尬吧?是什么原因?这段代码是如何工作的?
注意:我搜索了SO,但找不到任何相关问题.如果有任何好评请分享!
下面的代码是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; }
}
Run Code Online (Sandbox Code Playgroud)
我想知道的是,有没有其他方法可以在不使用任何数据结构的情况下打印路径(至少一个)???
像这样的东西......
void checkSum_second(NODE* root, int sum){
if(root …
Run Code Online (Sandbox Code Playgroud)