正在加载图片...
例2:删除值为x的结点的第i棵子树的 算法 delete如下 void delete( ctree &T int 删除树的第号结点及其子树 if! odes[i]. firstchild{∥删除叶结点 for(i=j;i<in-1;计++){号结点后的结点全部前移一位 nodes il. data T nodes i+ldata T nodes[i]. firstchild= T nodes[i+]. firstchild .n-- Else while(s-T nodes[i]. firstchild)i T. nodesli] firstchild=S->next i=S->child free(s) deleted(T,i);∥/递归删除第i号结点及其子树例2: 删除值为x的结点的第i棵子树的 算法delete如下: void deletej(Ctree &T, int j) {// 删除树T的第j号结点及其子树 if(!T.nodes[j].firstchild){ // 删除叶结点 for(i=j; i<T.n-1; i++) { // j号结点后的结点全部前移一位 T.nodes[i].data = T.nodes[i+1].data; T.nodes[i].firstchild = T.nodes[i+1].firstchild; } T.n--; }else{ while(s=T.nodes[j].firstchild){ T.nodes[j].firstchild = s->next; i = s->child; free(s); deletej(T, i); // 递归删除第i号结点及其子树 } } }
<<向上翻页向下翻页>>
©2008-现在 cucdc.com 高等教育资讯网 版权所有