从键盘输入扩展的先序结点数据,建立二叉树。 功能描述:从键盘输入扩展的先序结点数据,建立二叉树,空节点用.表示输入 参数说明:bt-BinTree指针 表示树根 返回值说明:无 比如输入:ACE.F...D.B.G.. 对应的树结构为竖向
时间: 2023-06-08 14:08:04 浏览: 151
A
|
C
|
E
|
.
|
.
|
D--B--G
|
.
|
.
回答:好的,我了解了。您可以使用以下代码来实现从键盘输入扩展的先序结点数据,建立二叉树的功能:
```c++
typedef char ElemType;
typedef struct BinTreeNode{
ElemType data;
struct BinTreeNode *lchild, *rchild;
}BinTreeNode, *BinTree;
//从键盘输入扩展的先序结点数据,建立二叉树
void CreateBinTree(BinTree &bt){
ElemType ch;
scanf("%c", &ch);
if(ch == '.') bt = NULL;
else{
bt = (BinTreeNode*)malloc(sizeof(BinTreeNode));
bt->data = ch;
CreateBinTree(bt->lchild);
CreateBinTree(bt->rchild);
}
}
```
您只需要在调用函数时,将树根的指针作为参数传入即可,例如:
```c++
int main(){
BinTree bt;
CreateBinTree(bt);
return 0;
}
```
相关问题
建立二叉树 功能描述:从键盘输入扩展的先序结点数据,输入数据为整形数据,以0表示空结点。
以下是建立二叉树的 Python 代码实现:
```python
class TreeNode:
definit__(self, val):
self.val = val
self.left = None
self.right = None
def buildTree():
val = int(input())
if val == 0:
return None
node = TreeNode(val)
node.left = buildTree()
node.right = buildTree()
return node
```
首先定义了一个 `TreeNode` 类,每个节点包含一个 `val` 值和两个指向左右子树的指针 `left` 和 `right`。然后定义了一个名为 `buildTree` 的函数,用于递归地构建二叉树。
从键盘读入一个整型数,如果是 0 则表示当前节点为空,返回 `None`。否则,创建一个新的节点,并递归构建左子树和右子树,最后返回根节点。
例如,输入以下数据:
```
1
2
0
0
3
4
0
0
5
0
0
```
则可以构建出如下的二叉树:
```
1
/ \
2 5
/ \
3 4
```
/*TODO:建立二叉树 功能描述:编写建立二叉树函数。从键盘输入扩展的先序结点数据序列,以二叉链表作为存储结构 输入#表示空结点 比如输入:AC##D## 对应的树结构为 A C D 参数说明:*bt-BitTree类型的指针参数 */ void CreatBiTree(BitTree *bt) { } 根据描述补全代码
以下是建立二叉树的代码:
```c
#include <stdio.h>
#include <stdlib.h>
typedef struct BitNode {
char data;
struct BitNode *lchild, *rchild;
} BitNode, *BitTree;
void CreatBiTree(BitTree *bt) {
char ch;
scanf("%c", &ch);
if (ch == '#') {
*bt = NULL;
} else {
*bt = (BitNode*)malloc(sizeof(BitNode));
(*bt)->data = ch;
CreatBiTree(&((*bt)->lchild));
CreatBiTree(&((*bt)->rchild));
}
}
int main() {
BitTree bt;
CreatBiTree(&bt);
return 0;
}
```
在该函数中,我们从键盘输入一个字符,如果该字符为#,则表示该节点为空;否则,我们新建一个节点,并将该节点的值赋值为输入的字符。接着,我们递归调用CreatBiTree函数,分别为该节点的左子树和右子树建立二叉树。函数结束后,我们通过指针bt返回建立好的二叉树的根节点。
阅读全文