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