键盘读入字符(数字、字母或其他符号)建立一个深度不小于3层的树的孩子兄弟表存储结构
时间: 2023-06-18 11:03:14 浏览: 87
以下是建立深度不小于3层的树的孩子兄弟表存储结构的示例代码:
```c++
#include <iostream>
using namespace std;
struct TreeNode {
char val;
TreeNode* firstChild;
TreeNode* nextSibling;
TreeNode(char c) : val(c), firstChild(nullptr), nextSibling(nullptr) {}
};
TreeNode* buildTree() {
char c;
cin >> c;
if (c == '#') {
return nullptr;
}
auto root = new TreeNode(c);
root->firstChild = buildTree();
auto p = root->firstChild;
while (p != nullptr) {
p->nextSibling = buildTree();
p = p->nextSibling;
}
return root;
}
int main() {
auto root = buildTree();
return 0;
}
```
该代码中,我们定义了一个树节点 `TreeNode`,其中包括节点的值 `val`,以及指向第一个孩子节点的指针 `firstChild` 和指向兄弟节点的指针 `nextSibling`。
在 `buildTree` 函数中,我们首先读入一个字符,如果该字符为 `#`,则返回空指针;否则,我们创建一个新的树节点,并将该字符赋值给该节点的值 `val`。接着,我们递归调用 `buildTree` 函数,将返回的子树根节点指针赋值给该节点的 `firstChild` 指针。然后,我们遍历该节点的所有孩子节点,并递归调用 `buildTree` 函数,将返回的子树根节点指针赋值给兄弟节点的 `nextSibling` 指针。最后,我们返回该节点的指针。
在主函数中,我们调用 `buildTree` 函数来建立树,并将树的根节点指针赋值给 `root` 变量。
阅读全文