关于#c++#的问题,如何解决?

关于一个c++运行递归的不解,,准备对一棵树进行中序遍历。在运行中发现一个很懵逼的问题,为什么递归到下一个节点(null),递归栈上面节点的数据就变了。

这是那棵树:

img

这是出问题的那个节点,按照代码逻辑,他的下一步应该是进入null然后直接返回,但是我发现他跳到null中时,前面递归栈的数据变了,我很难理解,为什么啊。

img

这是递归到那个节点时候的一个数据

img

这是进入null后的那个数据,地址都没变,他的值就变了。为什么啊。
有没有老大哥帮帮我啊,刚学c++,对于c++写的不是很熟练,是我哪儿写的有问题吗,我不理解啊。

img

#include 


typedef struct TreeNode {
    int data;
    TreeNode *left, *right;
} TreeNode, *Tree;

void initTree(Tree &t) {
    TreeNode t1[10];
  https://img-mid.csdnimg.cn/release/static/image/mid/ask/794916016166172.png "#left")
  for (int i = 0; i < 10; ++i) {
        t1[i].data = i;
        t1[i].left = nullptr;
        t1[i].right = nullptr;
    }
    t->left = &t1[0];
    t1[0].left = &t1[1];
    t1[0].right = &t1[2];
    t1[1].left = &t1[3];
    t1[1].right = &t1[4];
    t->right = &t1[5];
    t1[5].left = &t1[6];
    t1[6].left = &t1[7];
    t1[6].right = &t1[8];
    t1[5].right = &t1[9];
}


void visit(Tree t) {
    if (t != nullptr) {
        visit(t->left);
        printf(" %d ", t->data);
        visit(t->left);
    }
}

int main() {
    Tree tree = static_cast(malloc(sizeof(TreeNode)));
    tree->data = -1;
    tree->left = nullptr;
    tree->right = nullptr;
    initTree(tree);
    visit(tree);
    return 0;
}


你的两次visit里面都是t->left