1. 查找数据元素。
    Search(bt, x):在以bt为二叉树的根结点指针的二叉树中查找数据元素x。查找成功时返回该结点的指针;查找失败时返回空指针。
    算法实现如***意遍历算法中的Visit (bt->data) 等同于其中的一组操作步骤。
    二叉树的元素查找算法

    BiTree Search(BiTree *bt,elemtype x)
    { / * 在bt为根结点指针的二叉树中查找数据元素x */
    BiTree p;
    p=bt;
    if (p->data= =x) return p; / * 查找成功返回 */
    if ( p->lchild!=NULL) / * 在p->lchild为根结点指针的二叉树中查找数据元素x */
    return (Search (p->lchild, x) );
    if ( p->rchild!=NULL) / * 在p->rchild为根结点指针的二叉树中查找数据元素x */
    return (Search (p->rchild, x));
    return NULL; / * 查找失败返回 */
    }

  2. 求二叉树叶子结点个数
    算法:
    int CountLeaf2 (BiTree *bt)
    { / * 开始时,bt为根结点所在链结点的指针,返回值为bt的叶子数 */
    if (btNULL) return(0);
    else if (bt->lchild
    NULL && bt->rchild==NULL)
    return (1);
    else
    return (CountLeaf2 (bt->lchild)+CountLeaf2 (bt->rchild));
    }

  3. 求二叉树的深度运算。
    求深度算法同样可以通过遍历操作来实现,算法如下

    int treehigh (BiTree *bt)
    { int lh,rh,h;
    if (bt==NULL) h=0;
    else
    { lh=treehigh(bt->lchild);
    rh=treehigh (bt->rchild);
    h=(1h>rh-1h:rh)+1;
    }
    return h;
    }

  4. 已知结点的前序序列和中序序列分别如下。
    前序序列:A B C D E F G
    中序序列:C B E D A F G
    则可按上述分解求得整棵二叉树。其构造过程如图所示。首先由前序序列得知二叉树的根为A,则其左子树的中序序列为(C B E D),右子树的中序序列为(F G)。反过来得知其左子树的前序序列必为(B C D E),右子树的前序序列为(F G)。类似地,可由左子树的前序序列和中序序列构造得A的左子树,由右子树的前序序列和中序序列构造得A的右子树。

    数据结构(c语言版 5.2.2 二叉树的其他操作举例)

相关文章:

  • 2021-08-13
  • 2021-10-01
  • 2021-06-03
  • 2021-12-02
  • 2021-12-20
  • 2021-05-25
猜你喜欢
  • 2021-09-12
  • 2022-01-13
  • 2021-04-19
  • 2022-01-07
  • 2021-10-27
  • 2022-12-23
  • 2021-11-20
相关资源
相似解决方案