C++ 使用单独的.cpp文件中的/create/modify变量

C++ 使用单独的.cpp文件中的/create/modify变量,c++,binary-search-tree,C++,Binary Search Tree,长话短说,我被要求: 构建一个二叉搜索树,T1 执行T1的后序遍历,并在执行后序遍历时,将节点插入第二个二叉搜索树T2 我无法同时将这些值保存到T2。我试过各种方法,但什么都没有。我试过用很多方法来攻击它。我想我可以在main.cpp中创建T2,然后从BST.cpp中输入postorder搜索,但是失败了 不确定是否可以从单独的.cpp文件调用和修改变量 我希望你们中的一个能给我一些建议 我想我可以通过创建一个新数组将T1的结果硬编码到main.cpp,但是我的教授对以下细节非常挑剔 谢谢你的帮

长话短说,我被要求:

  • 构建一个二叉搜索树,
    T1

  • 执行
    T1
    的后序遍历,并在执行后序遍历时,将节点插入第二个二叉搜索树
    T2

  • 我无法同时将这些值保存到
    T2
    。我试过各种方法,但什么都没有。我试过用很多方法来攻击它。我想我可以在
    main.cpp
    中创建
    T2
    ,然后从
    BST.cpp
    中输入postorder搜索,但是失败了

    不确定是否可以从单独的
    .cpp
    文件调用和修改变量

    我希望你们中的一个能给我一些建议

    我想我可以通过创建一个新数组将
    T1
    的结果硬编码到
    main.cpp
    ,但是我的教授对以下细节非常挑剔

    谢谢你的帮助和建议

    (我在代码中省略了与
    T2
    有关的任何内容,因为它不会编译。)

    main.cpp

    int main() {
    
    int TreeKeys[10] = {50, 76 ,21 , 4, 32, 64, 15, 52, 14, 88};
    BST T1;
    BST T2;
    
    cout << "Printing T1 before inputing values:\n";
    
    T1.PrintInOrder();
    
    
    for (int i = 0; i < 10; i++)
    {
        T1.AddLeaf(TreeKeys[i]);
    }
    
    cout << "****************" << endl;
    
    cout << "Printing T1 in PostOrder:" << endl;
    T1.printPostOrder();
    cout << endl;
    
    return 0;
    }  
    

    变量不存在于文件中,它们存在于作用域中

    基本上有三种解决方案:

    1) 在
    main
    中声明
    t2
    ,并将其作为输出参数传递给执行
    t1
    遍历的函数,例如

    void BST::postOrderTraversal(BST& tree_to_build);
    
    2) 在遍历函数中声明并构建第二棵树,并按值返回(可能涉及副本)

    3) (b)在遍历函数中动态分配一棵新树,并返回指向它的指针;需要在
    main
    中删除该对象

    BST* BST::postOrderTraversal();
    

    我想你把“做一次后序遍历”误读为“按后序打印树”。你是对的,但打印是为了帮助我。通过打印,我可以验证我是否正确进行了后期订购。但我还不能,因为我不确定如何将节点添加到T2。
    void BST::postOrderTraversal(BST& tree_to_build);
    
    BST BST::postOrderTraveral();
    
    BST* BST::postOrderTraversal();