几天前我对同一程序有疑问,但现在我遇到了一个新问题。我的导师告诉我需要重载赋值运算符以允许我的构造函数理解将一棵二叉树分配给另一棵二叉树。我尝试了几种不同的方法,但似乎无法获得正确的语法或想法。我花了一个小时在谷歌上四处挖掘,似乎找不到任何与我正在做的事情足够接近以真正帮助我的例子。他说话的方式,似乎让接线员超负荷就够了。网上的每个例子似乎都使用了重载和一个单独的函数。有什么想法吗?
这是我到目前为止所拥有的:
#ifndef BINARYTREE_H
#define BINARYTREE_H
using namespace std;
#include <cstdlib>
#include <iostream>
template <class Node_Type>
class BinaryTree
{
public:
BinaryTree();
BinaryTree(Node_Type);
BinaryTree(Node_Type, BinaryTree<Node_Type>, BinaryTree<Node_Type>);
bool isEmpty();
Node_Type info();
Node_Type inOrder();
Node_Type preOrder();
Node_Type postOrder();
const BinaryTree & operator=(const BinaryTree<Node_Type> & original);
private:
struct Tree_Node
{
Node_Type Node_Info;
BinaryTree<Node_Type> *left;
BinaryTree<Node_Type> *right;
};
Tree_Node *root;
};
template <class Node_Type>
BinaryTree<Node_Type>::BinaryTree() {
root = NULL;
}
template <class Node_Type>
BinaryTree<Node_Type>::BinaryTree(Node_Type rootNode) {
root = new Tree_Node;
root->Node_Info = rootNode;
root->left = NULL;
root->right = NULL;
}
template <class Node_Type>
BinaryTree<Node_Type>::BinaryTree(Node_Type rootNode, BinaryTree<Node_Type> leftTree, BinaryTree<Node_Type> rightTree){
root = new Tree_Node;
root->Node_Info = rootNode;
root->left = &leftTree;
root->right = &rightTree;
}
template <class Node_Type>
bool BinaryTree<Node_Type>::isEmpty(){
if (root == NULL)
return true;
}
template <class Node_Type>
Node_Type BinaryTree<Node_Type>::info(){
return root->Node_Info;
}
template <class Node_Type>
Node_Type BinaryTree<Node_Type>::inOrder(){
if (root->left != NULL)
root->left->inOrder();
cout << root->Node_Info;
if (root->right != NULL)
root->right->inOrder();
}
template <class Node_Type>
Node_Type BinaryTree<Node_Type>::preOrder(){
cout << root->Node_Info;
if (root->left != NULL)
root->left->preOrder();
if (root->right != NULL)
root->right->preOrder();
}
template <class Node_Type>
Node_Type BinaryTree<Node_Type>::postOrder(){
if (root->left != NULL)
root->left->postOrder();
if (root->right != NULL)
root->right->postOrder();
cout << root->Node_Info;
}
template <class Node_Type>
const BinaryTree<Node_Type> & BinaryTree<Node_Type>::operator =(const BinaryTree<Node_Type>& original){
root = new Tree_Node;
root->Node_Info = original.info();
root->left = original->root->left;
root->right = original->root->right;
return *this;
}
#endif /* BINARY_TREE_H */
我知道这里可能存在根本性错误。我只是对 C++ 了解不够,无法真正解决问题。上学期我在指针和动态内存方面的经验有限。对不起,如果我把事情搞砸了。谢谢你的帮助!