BinaryTreeNode<ElemType>* BinaryTree<ElemType>::CreateBinaryTree(vector<ElemType> &x, ElemType &empty, int &n)解读一下这个程序
时间: 2024-02-25 16:59:32 浏览: 67
这个程序是BinaryTree类中的成员函数CreateBinaryTree的实现,返回值类型为BinaryTreeNode<ElemType>指针类型,表示创建好的二叉树的根节点指针。函数接受三个参数:
- vector<ElemType>& x:表示存储二叉树节点数据的vector序列
- ElemType& empty:表示空节点的数据
- int& n:表示当前处理的节点在序列中的下标
函数实现的过程可以简单概括为:根据传入的vector序列x和下标n,创建一个新的二叉树节点,并根据节点的data成员来确定节点的左子树和右子树,然后递归调用CreateBinaryTree函数创建左右子树,最后返回创建好的节点指针。
具体来说,函数中的语句:
```cpp
ElemType ch = x[n];
n++;
```
表示从vector序列中获取当前节点的数据,并将下标n增加1。
接着,语句:
```cpp
if (ch == empty) {
return NULL;
}
```
表示如果当前节点的数据等于empty,即该节点为空节点,直接返回NULL表示空节点。
否则,语句:
```cpp
BinaryTreeNode<ElemType> *Node = new BinaryTreeNode<ElemType>;
Node->data = ch;
```
表示创建一个新的二叉树节点,并将当前节点的数据赋值给该节点的data成员。
接下来,语句:
```cpp
Node->LChild = CreateBinaryTree(x, empty, n);
Node->RChild = CreateBinaryTree(x, empty, n);
```
表示递归调用CreateBinaryTree函数来创建该节点的左子树和右子树,并将返回的指针分别赋值给该节点的LChild和RChild成员。
最后,语句:
```cpp
return Node;
```
表示返回创建好的节点指针。
阅读全文