正在加载图片...
if (T==NULL)n=0 else n=l+Node Count(T->lchild)+Node Count(T->rchild) return n int LeafCount(BiTree T)i /递归法统计叶子结点的个数 int n if(T==NULL)n=0 else if(T->lchild==NULL&&T->rchild=NULL)n=l else n=LeafCount( T->lchild)+LeafCount(T->rchild) return n Status PrintTElem(TElem Type e)i intf("%c",e) return OK Status PreOrderTraverse(BiTree T, Status(*visit)(TElemType)) if(T) (*visit)(T->data) PreOrderTraverse(T->lchild, (*visit)) PreOrderTraverse(T-rchild, (*visit)) re Status InOrderTraverse( BiTree T, Status(*visit)(TElem Type)) if(T)I InOrder Traverse(T->Child, (*visit)) InOrderTraverse(T->rchild, (*visit)) return Status Pos tOrderTraverse(BiTree T, Status(*visit)(TElemType)) f(T){ PostOrderTraverse(T-lchild,(*visit)) PostOrderTraverse(T->rchild, (*visit)) *visit)(T->data) return OK. int PreOrder LeafCount(BiTree T, int &count) /基于先序遄历求叶结点数, count用作计数器,初值为。函数返回值为叶结点数。实际将先序遍历过程中 的 visIt函数变为判断当前结点是否为叶子节点、是则加的操作即可 if(!T)return coun f(!T->lchild&&!T->rchild)++count PreOrder LeafCount(T->lchild, count) PreOrder LeafCount(T->rchild, count) return coun Status Copy BiTree( BiTree t, BiTree&x)/复制树T得到树x,T保持不变 if(T)X=NULLif(T==NULL)n=0; else n=1+NodeCount(T->lchild)+NodeCount(T->rchild); return n; } int LeafCount(BiTree T){ //递归法统计叶子结点的个数 int n; if(T==NULL)n=0; else if(T->lchild==NULL&&T->rchild==NULL)n=1; else n=LeafCount(T->lchild)+LeafCount(T->rchild); return n; } Status PrintTElem(TElemType e){ printf("%c",e); return OK; } Status PreOrderTraverse(BiTree T,Status(*visit)(TElemType)) { if(T){ (*visit)(T->data); PreOrderTraverse(T->lchild,(*visit)); PreOrderTraverse(T->rchild,(*visit)); } return OK; } Status InOrderTraverse(BiTree T,Status(*visit)(TElemType)) { if(T){ InOrderTraverse(T->lchild,(*visit)); (*visit)(T->data); InOrderTraverse(T->rchild,(*visit)); } return OK; } Status PostOrderTraverse(BiTree T,Status(*visit)(TElemType)) { if(T){ PostOrderTraverse(T->lchild,(*visit)); PostOrderTraverse(T->rchild,(*visit)); (*visit)(T->data); } return OK; } int PreOrder_LeafCount(BiTree T,int &count){ //基于先序遍历求叶结点数,count用作计数器,初值为。函数返回值为叶结点数。实际将先序遍历过程中 的visit函数变为判断当前结点是否为叶子节点、是则加的操作即可 if(!T)return count; else{ if(!T->lchild&&!T->rchild)++count; PreOrder_LeafCount(T->lchild,count); PreOrder_LeafCount(T->rchild,count); return count; } } Status CopyBiTree(BiTree T,BiTree &X){//复制树T得到树X,T保持不变 if(!T)X=NULL; else{
<<向上翻页向下翻页>>
©2008-现在 cucdc.com 高等教育资讯网 版权所有