一、要求
输入一个字符串,字符串中,二叉树中每个节点用一个字符表示(a~z或A-Z),空节点用#表示。构造一个二叉链表。
如:AB#D##CE#F###
二、代码
1.结点类定义
class BinaryTreeNode{
friend class BinaryTree;
private:
char info;
BinaryTreeNode* lChild,*rChild;
};
2.二叉链表类定义
class BinaryTree {
private:
BinaryTreeNode *root;
//字符串
char str[maxSize];
public:
BinaryTree() {
root = NULL;
//读取输入的字符串
cin>>str;
}
//构造二叉链表
BinaryTreeNode* CreatBinaryTree(BinaryTreeNode* node) {
static int i=0;
char ch=str[i++];
if (ch == '#'){
node = NULL;
} else{
node = new BinaryTreeNode;
node->info=ch;
//递归构造左子树
node->lChild = CreatBinaryTree(node->lChild);
//递归构造右子树
node->rChild = CreatBinaryTree(node->rChild);
}
return node;
}
};