前言
二叉树是十分基础的数据结构,需要着重掌握树的三种遍历,再加一个层序遍历,会应用算法解决完全二叉树等的判断,注释已经很详细了,原理不做深究,请自行复习。算法
本算法的存储结构为邻接矩阵,类型声明如下:typedef struct BitNode {
char key;//数据域
struct BitNode* lchild;//左孩子
struct BitNode* rchild;//右孩子
}Node,*BitTree;
下面是算法本体
//二叉树的层序遍历
void sequence(BitTree& tree) {
queue<Node*> que;
if (tree == NULL) {
return;
}
que.push(tree);
while(!que.empty()) {
Node* node = que.front();
que.pop();
cout << node->key << endl;
if (node->lchild != NULL) {
que.push(node->lchild);
}
if (node->rchild != NULL) {
que.push(node->rchild);
}
}
}
//先序遍历二叉树
void preorder(BitTree& tree) {
if (tree != NULL) {
cout << tree->key << endl;
preorder(tree->lchild);
preorder(tree->rchild);
}
}
上机须知
|
A
B
#
C
D
#
#
E
#
#
F
#
G
H
#
#
#
源码地址:点击这里