问题描述
我正在尝试使用中序横向编写横向树结构数据的代码,并将所有树节点存储到数组中。
void inorderTraversal(AVLTreeNode *node,AVLTreeNode *nodesArray[],int *index)
{
if (node == NULL)
return;
inorderTraversal(node->left,nodesArray,index);
nodesArray[*index] = node;
(*index)++;
inorderTraversal(node->right,index);
}
如果我在主函数中首先声明 index
如下
int index = 0;
inorderTraversal(tree->root,&index);
但如果我只是在下面这样做,它就行不通。
inorderTraversal(tree->root,&0);
解决方法
&0
没有意义,因为 &
运算符用于获取对象的地址。整数文字不是对象,因此没有地址。
如果你不打算在函数完成后使用 index
的值,你可以传递一个复合字面量的地址:
inorderTraversal(tree->root,nodesArray,&(int){0});
这会创建一个临时对象,该对象的地址可以被使用,并且在使用它的语句之后不再存在。
不过,我认为您希望保留此值,以便您知道 nodesArray
完成后 inorderTraversal
中有多少个值。