二叉树的构建(C++)

原博客:https://blog.csdn.net/libingbojava/article/details/81080036 包含前中后序遍历,这里我只写了构建,方便查看

定义二叉树的结构: 

typedef  struct BiTNode
{
	char  data;
	struct BiTNode *lchild , *rchild;  //左右孩子指针 
} BiTNode , *BiTree;

需要注意:如果不使用typedef ,那么定义结构变量时必须每次加上struct,也就是写成 struct  BiTNode 变量名。而这里就可以直接定义成:BiTNode 变量名。   *BiTree 是一个指向结构体自己的指针,也就是等价于:typedef struct  BiTNode *BiTree ;

接下来创建二叉树:

bool  CreateBiTree(BiTree &T)
{
	//按先序序列输入二叉树中的节点值,空格代表空字符 
	char key; //接收输入的字符
	cout<<"先序输入字符"<<endl; 
	cin>>key;
      //输入0代表该节点为叶子节点,结束插入
	if(key == '0')  T = NULL;
	else
	{
        //如果空间分配失败
		if(! (T = (BiTNode*) malloc (sizeof(BiTNode))))	  return false;
		T->data = key;
		CreateBiTree(T->lchild) ; //构造左子树
		CreateBiTree(T->rchild) ;//构造右子树 
	}
	return true;
}

测试:

int main()
{
	BiTree T;
	CreateBiTree(T);
}

输入的顺序为:6 5 3 0 0 4 0 0 7 0 0
构建出的二叉树如下:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值