二叉树的基础代码:遍历+深度
求二叉树的深度(后序遍历)
int Depth (BiTree T ) // 返回二叉树的深度
{
if ( !T ) depthval = 0;
else{
depthLeft = Depth( T->lchild );
depthRight= Depth( T->rchild );
depthval = 1 + (depthLeft > depthRight ?depthLeft : depthRight);
}
return depthval;
}
遍历二叉树
void Preorder (BiTree T,void( *visit)(TElemType& e))
{ // 先序遍历二叉树
if (T) {
visit(T->data); // 访问结点
Preorder(T->lchild, visit); // 遍历左子树
Preorder(T->rchild, visit);// 遍历右子树
}
}
void Inorder (BiTree T,void( *visit)(TElemType& e))
{ // 中序遍历二叉树
if (T) {
Inreorder(T->lchild, visit); // 遍历左子树
visit(T->data); // 访问结点
Inreorder(T->rchild, visit); // 遍历右子树
}
}
void Postorder (BiTree T,void( *visit)(TElemType& e))
{ // 后序遍历二叉树
if (T) {
Postreorder(T->lchild, visit); // 遍历左子树
Postreorder(T->rchild, visit);// 遍历右子树
visit(T->data); // 访问结点
}
}