二叉树是每个结点最多有两个子树的树结构。通常子树被称作“左子树”(left subtree)和“右子树”(right subtree),
二叉树的储存结构
typedef char ElemType;
typedef struct BtNode
{
BtNode *leftchild;
BtNode *rightchild;
ElemType data;
}BtNode, *BinaryTree;
一、利用"#"来补全 空的子树的思想来构建二叉树;
首先,给出申请结点和释放结点的地代码:
BtNode *Buynode()//购买结点
{
BtNode *s = (BtNode*)malloc(sizeof(BtNode));
if (NULL == s) exit(1);
memset(s, 0, sizeof(BtNode));
return s;
}
void Freenode(BtNode *p)//释放结点
{
free(p);
}
利用递归的思想:
- 先申请结点,
- 递归创建左子树,
- 碰到#就去,递归创建右子树;
可以自己试试序列(ABC##DE##F