前序递归建立二叉树

本文通过实例解析如何递归地建立二叉树,作者在遇到无法手写递归构造二叉树的问题后,深入理解了递归建树的思路,将其与递归遍历相联系,并给出了用标志位 '@' 表示 nullptr 的代码实现。

目录

前言

思路 

代码


 

前言

上午在写二叉搜索树的最近公共祖先时,很尴尬,发现手写不出来递归建立二叉树的版本,不禁开始怀疑自己到底会不会二叉树,连最基本的建立都不会.....(趁着没人发现赶紧补习一波!!!冲冲冲!)

思路 

其实递归建立二叉树和递归遍历二叉树思路基本是一样的,无非是将原来的"读出数据" 改成"创建节点并为节点赋值",后面都是一样的递归.

我们可以使用一个标志位'@'来表示nullptr.

代码


TreeNode* CreateBiTree()
{
	char ch;
	cin >> ch;
	if (ch == '@')
		return nullptr;
	TreeNode* tempNode = (TreeNode*)new TreeNode();
	if (tempNode == nullptr)
	{
		cout << "内存分配失败";
		return NULL;
	}
	tempNode->val = ch-'0';
	cout << "请输入节点 " << ch << " 的左节点: ";
	tempNode->left = CreateBiTree();
	cout << "请输入节点 " << ch &l
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Shallow_Carl

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值