//建立二叉树的存储结构 (外壳) template<class ElemType> void CreateTree(BinaryTree<ElemType> &T, ElemType &str, ElemType &empty){ ElemType tmp; vector<ElemType> t; stringstream input_T(str); while(input_T >> tmp){ t.push_back(tmp); } BinaryTreeNode<ElemType> *root; int num = 0; root = T.CreateBinaryTree(t, empty, num); T.SetRoot(root); }解读一下这个程序
时间: 2024-02-26 11:52:19 浏览: 73
这段程序是一个建立二叉树的存储结构的外壳,使用了模板类的方式来支持不同类型的元素。具体解释如下:
- `template<class ElemType>`:定义了一个模板类,其中 `ElemType` 表示元素的类型。
- `void CreateTree(BinaryTree<ElemType> &T, ElemType &str, ElemType &empty)`:定义了一个名为 `CreateTree` 的函数,它需要三个参数。第一个参数是一个二叉树对象 `T` 的引用,表示要构建的二叉树;第二个参数是一个字符串 `str` 的引用,表示二叉树的元素序列;第三个参数是一个空元素 `empty` 的引用,表示二叉树中的空节点。
- `ElemType tmp;`:定义了一个临时变量 `tmp`,用于将输入的字符串逐个读入到其中。
- `vector<ElemType> t;`:定义了一个向量 `t`,用于存储输入的元素序列。
- `stringstream input_T(str);`:定义了一个字符串输入流 `input_T`,用于将输入的字符串 `str` 转化为输入流,方便逐个读取其中的元素。
- `while(input_T >> tmp){t.push_back(tmp);}`:使用 `while` 循环逐个读取输入流中的元素,并将其存储到向量 `t` 中。
- `BinaryTreeNode<ElemType> *root;`:定义了一个指向二叉树节点的指针 `root`,用于存储二叉树的根节点。
- `int num = 0;`:定义了一个整型变量 `num`,用于记录当前正在处理的元素在向量 `t` 中的索引。
- `root = T.CreateBinaryTree(t, empty, num);`:调用二叉树对象 `T` 的 `CreateBinaryTree` 方法创建二叉树,并将返回的根节点指针存储到 `root` 变量中。
- `T.SetRoot(root);`:将二叉树的根节点设置为 `root`。
阅读全文