网站标题如何书写,代理网址域名,搜索引擎推广方法,四川建设厅电话网站二叉树的建立
由于树是非线性结构#xff0c;创建一颗二叉树必须首先确定树中结点的输入顺序#xff0c;常用方法是先序创建和层序创建。 层序创建所用的节点输入序列是按数的从上至下从左到右的顺序形成的各层的空结点输入数值0。在构造二叉树过程中需要一个队列暂时存储各…二叉树的建立
由于树是非线性结构创建一颗二叉树必须首先确定树中结点的输入顺序常用方法是先序创建和层序创建。 层序创建所用的节点输入序列是按数的从上至下从左到右的顺序形成的各层的空结点输入数值0。在构造二叉树过程中需要一个队列暂时存储各节点的地址其创建过程如下
输入第一个数据 · 若为0表示此树为空将空指针赋给根指针树构造完毕 · 若不为0动态分配一个结点单元并存入数据同时将该结点地址放入队列。若队列不为空从队列中取出一个结点地址并建立该节点的左右孩子。 · 从输入序列中读入下一个数据 若读入的数据为零将出队节点的左孩子指针置空否则分配一个节点单元存入所读数值并将其作为出对节点的左孩子同时将此孩子的地址入队 · 接着再从输入序列中读入下一个数据 若读入的数据为零将出队节点的右孩子指针置空否则分配一个节点单元存入所读数值并将其作为出对节点的右孩子同时将此孩子的地址入队重复第二步过程直到队列为空再无节点出队。
代码实现层序创建二叉树
BinTree CreateBinTree() {ElementType Data;BinTree BT, T;Queue Q CreateQueue(100);int sum 0;scanf_s(%d, Data);if (Data ! 0) {BT (BinTree)malloc(sizeof(struct TNode));BT-Data Data;BT-Left NULL;BT-Right NULL;AddQ(Q, BT);}else return NULL;while ((!IsEmptyQ(Q)) sum 3) {sum;scanf_s(%d, Data);T DeleteQ(Q);if (Data 0) {T-Left NULL;}else {T-Left (BinTree)malloc(sizeof(struct TNode));T-Left-Data Data;T-Left-Left T-Left-Right NULL;AddQ(Q, T-Left);}scanf_s(%d, Data);if (Data 0) {T-Right NULL;}else {T-Right (BinTree)malloc(sizeof(struct TNode));T-Right-Data Data;T-Right-Left T-Right-Right NULL;AddQ(Q, T-Right);}}return BT;}创建过程