目录
1.链式存储数据结构的定义
typedef struct BiTNode {//树结点
int data;
BiTNode* lchild, * rchild;
}BiTNode, * BiTree;
2.先序遍历
//先序遍历
void PreOrder(BiTree T) {
if (T != NULL) {
visit(T); //访问结点
PreOrder(T->lchild);
PreOrder(T->rchild);
}
}
3.中序遍历
//中序遍历
void InOrder(BiTree T) {
if (T != NULL) {
InOrder(T->lchild);
visit(T);
InOrder(T->rchild);
}
}
4.后序遍历
//后序遍历
void PostOrder(BiTree T) {
if (T != NULL) {
PostOrder(T->lchild);
PostOrder(T->rchild);
visit(T);
}
}
5.层次遍历
//层次遍历
void levelOrderTraversal(BiTree T) {
queue<BiTNode*> q; //辅助队列
BiTNode* p = NULL; //用于临时存放队头的BiTNode指针
q.push(T); //根节点入队
while (!q.empty()) {
p = q.front(); //队头
visit(p); //访问队头这个元素
if (p->lchild != NULL)
q.push(p->lchild); //队头的左孩子入队
if (p->rchild != NULL)
q.push(p->rchild); //队头的右孩子入队
q.pop(); //队头出队
}
}
6.利用二叉树的递归特性求树高(树深度)
int treeDepth(BiTree T) {
if (T == NULL) {
return 0;
}
else {
int left = treeDepth(T->lchild);
int right = treeDepth(T->rchild);
return left > right ? left + 1 : right + 1;
}
}