飞鸟各投林

导航

二叉树的基础代码:遍历+深度

求二叉树的深度(后序遍历)

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);         // 访问结点

     }

}

 

posted on 2017-04-13 09:20  飞鸟各投林  阅读(689)  评论(0编辑  收藏  举报