- 树种结点的输入顺序:层序创建–>按树的从上至下从左右的顺序输入,各层的空结,点输入数值0。在构造二叉树过程中,需要一个队列暂时存储各结点的地址。
- 创建过程:
1)输入第一个数据:
若为0,表示是此树为空,将空指针赋值给根指针,树构 造完毕。
若不为0,动态分配一个结点单元,并存入数据,同时将该结点地址放入队列。
2)若队列不为空,从队列中取出一个结点地址,并建立该结点的左孩子:
从输入序列中读入下一数据:
若读入的数据为0,将出队结点的左孩子指针置空;否则,分配一个结点单元,存入所读数值,并将其置为出队结点的左孩子,同时将此孩子地址入队;
接着再从输入序列中读入下一个数据:
若读入的数据为0,将出队结点的右孩子指针置空;否则分配一个结点单元,存入所读数值,并将其置为出队结点的右孩子,同时将此孩子地址入队。
3)重复 2)过程,直到队列为空,再无结点出队,构造过程到此结束。
4)返回根结点地址
#include <iostream>
using namespace std;
typedef struct TNode *Position;
typedef Position BinTree;
typedef ElementType int;
#define NoInfo 0
struct TNode{
ElementType data;
BinTree left;
BinTree Right;
};
BinTree CreateBinTree()