二叉树的构建(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<<"先序输入字符"<>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
构建出的二叉树如下:
二叉树的构建(C++)_第1张图片

你可能感兴趣的:(数据结构,C++,二叉树,构建,C++)