void BinaryTree<T>::creat() { this->CreatBiTree(root); } template<typename T> void BinaryTree<T>::CreatBiTree(BinaryTreeNode<T>* str) { T value; cin >> value; if (value == ""#"") { return; } else { str = new BinaryTreeNode<T>(value, NULL, NULL); cout << "input the " << str->data << " leftchild:"; CreatBiTree(str->leftChild); cout << "input the " << str->data << " rightchild:"; CreatBiTree(str->rightChild); } }
解决方案:10分
你的参数需要传一个引用:
void BinaryTree<T>::CreatBiTree(BinaryTreeNode<T>* &str)
void BinaryTree<T>::CreatBiTree(BinaryTreeNode<T>* &str)
解决方案:30分
指针传递深度问题,你传*str,在函数里只能改变*str的值,要改变str的值,必须传**str,这就跟你传a什么也改变不了,传*a才可以改变实参值一样