C++构造二叉树,数据无法传入实参

#include<iostream>

typedef char ElemType;

class TreeNode
{
public:
	ElemType data;
	TreeNode *lchirld, *rchirld;
};

void CreateTree(TreeNode *T)
{
	ElemType pdata = 0;
	std::cin >> pdata;
	if (pdata == '#')
		T = nullptr;
	else
	{
		T = new TreeNode();
		T->data = pdata;
		CreateTree(T->lchirld);
		CreateTree(T->rchirld);
	}
}

void PreOrderTraverse(TreeNode *T)
{
	if (T == nullptr)
		return;
	std::cout << T->data;
	PreOrderTraverse(T->lchirld);
	PreOrderTraverse(T->rchirld);
}


int main(void)
{
	TreeNode *T=nullptr;
	CreateTree(T);
	PreOrderTraverse(T);
	return 0;
}

 

实参的值会传递给形参,但改变形参不会影响实参,给你以下几种方法

1.T=new TreeNode();改为在主函数中使用

2.CreateTree函数的参数改为&TreeNode *T

3.将CreateTree函数的定义改为TreeNode *T CreateTree(),函数最后返回T,主函数中这样调用 T=CreateTree();

推荐第三种

所以碰到啥问题了这个....

加上构造函数试试?