6.4.2 二叉树其它操作算法举例 一、统计二叉树中叶子结点的个数 容易想到,实现这个操作只要对二叉树"遍历"一遍,并在遍历过程中对"叶子结点计数"即可。显然这个遍历的次序可以随意,即先序或中序或后序均可,只是为了在遍历的同时进行计数,需要在算法的参数中设一个"计数器"。 算法6.3 void CountLeaf (BiTree T, int& count) { // 先序遍历二叉树,以 count 返回二叉树中叶子结点的数目 if ( T ) { if ((!T->Lchild)&& (!T->Rchild)) count++; // 对叶子结点计数 CountLeaf( T->Lchild, count); CountLeaf( T->Rchild, count); } // if } // CountLeaf |
遍历二叉树是二叉树各种操作的基础,即很多操作可以在遍历过程中完成。根据遍历算法的程序框架,可以派生出很多关于二叉树的应用算法,如求结点的双亲、结点的孩子,判定结点所在层次等,甚至可以在遍历过程中生成结点,建立二叉树的存储结构。
|