二叉樹的構建(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
構建出的二叉樹如下:

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章