上一周做了二叉树和HuffmanTree的实际操作。
不一次性贴出来了,只贴出关键代码部分
二叉树的储存结构:
typedef struct bitnode
{
int data; //结点数据域
struct bitnode *lchild, *rchild; //左右孩子指针
} *binary_tree;
先序遍历建立二叉树:
通过递归的方式,遇到‘#’返回上一层,否则生成根节点,向左右孩子拓展。
void first_creat_binarytree(binary_tree &T)
{
char ch;
cin >> ch;
if (ch == '#') T = NULL; //递归结束,建空树
else
{
T = new bitnode;
T->data = ch; //生成根节点
first_creat_binarytree(T->lchild);
first_creat_binarytree(T->rchild);
}
}
遍历二叉树:
这里采用的是中序遍历,将三条语句的顺序进行调整,可以得到先