void CreateBiTree(SqBiTree &T) { // 按层序次序输入二叉树中结点的值(字符型或整型), 构造顺序存储的二叉树T /********** Begin **********/ /********** End **********/ }
时间: 2024-05-28 14:07:57 浏览: 222
这个函数是用来构建顺序存储的二叉树的。它按照层序遍历的方式输入二叉树中结点的值(字符型或整型),并且按照顺序存储的方式构造出对应的二叉树。函数的实现方式如下:
1. 首先读入二叉树中结点的总数,将其赋值给n,如果n为0,则直接返回。
2. 然后将一个大小为n的数组作为顺序存储的二叉树,并将数组中所有元素初始化为空。
3. 接着从数组下标1开始,依次读入每个结点的值,将其赋值给数组中对应的位置。
4. 最后从根结点开始,按照层序遍历的方式,依次将每个非空结点的左右儿子指向对应位置的元素。
具体实现细节可以参考以下代码:
void CreateBiTree(SqBiTree &T)
{
// 读入二叉树中结点的总数
int n;
cin >> n;
if (n == 0) return;
// 构造顺序存储的二叉树
T = new TElemType[n+1];
for (int i = 1; i <= n; i++) T[i] = 0;
// 依次读入每个结点的值,并将其存储到对应位置
for (int i = 1; i <= n; i++) {
TElemType x;
cin >> x;
T[i] = x;
}
// 将非空结点的左右儿子指向对应位置的元素
for (int i = 1; i <= n; i++) {
if (T[i] != 0) {
if (2*i <= n) T[2*i] = T[2*i] ? T[2*i] : 0;
if (2*i+1 <= n) T[2*i+1] = T[2*i+1] ? T[2*i+1] : 0;
}
}
}
阅读全文