创建二叉树(递归+先序遍历)

创建二叉树(递归+先序遍历)

(1) 自输入数据元素,形参为引用类型或二级指针

class treeNode
{
public:
	int value;
	treeNode *left;
	treeNode *right;
};

//  递归+先序遍历创建二叉树
void createBinaryTree(treeNode *&root)   //  形参必须声明为引用类型或二级指针
{
	int num;
	cin >> num;
	if (num != -1)                   //  -1作为标志字符
	{
		root = new treeNode;
		root->value = num;
		createBinaryTree(root->left);
		createBinaryTree(root->right);
	}
	else
		root = nullptr;
}
// 输入:1 2 3 -1 -1 4 -1 -1 5 6 -1 -1 -1 
// 输出:前序遍历:123456  中序遍历:324165  后序遍历:342651

/*
//  形参为二维指针
void createBinaryTree_ptr(treeNode **root)
{
	int num;
	cin >> num;
	if (num != -1)
	{
		*root = new treeNode;
		(*root)->value = num;
		createBinaryTree_ptr(&((*root)->left));
		createBinaryTree_ptr(&((*root)->right));
	}
	else
		*root = nullptr;
}
*/

(2) 输入数组或vector形参

void createBinaryTree_vector(treeNode *&root, vector<int>::iterator &it)
{

	if ((*it) != -1)
	{
		root = new treeNode;
		root->value = *it;
		createBinaryTree_vector(root->left, ++it);
		createBinaryTree_vector(root->right, ++it);
	}
	else
		root = nullptr;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值