森林孩子—兄弟链表形式的层次遍历

 关于森林(孩子-兄弟链表形式)的层次遍历:它类似于图的广度优先搜索(BFS)

      首先要清楚孩子-兄弟链表表示森林的特点。

      接下来看伪代码:

//使用队列来依次存储同层结点void LevelTraverse(csTree T) {      //csTree 表示树的结构体指针csTree P = T;csTree K ;Queue sqQueue;             //声明一个队列InitQueue(&sqQueue);       //初始化一个队列while (P)                  //这里的 P 是指森林中可能有多棵子树,指向每棵子树的根节点{K = P;            //利用 K 来遍历以 P 为根节点子树中的节点EnQueue(&sqQueue, K);   //先将根节点入队while (!IsEmpty(&sqQueue)) {    //只要队列不为空,则依次出队,直到队空OutQueue(&sqQueue, &K);   //出队cout << K->data << "\t";  //打印该元素if (K->firstChild) {    //如果该节点不是森林中的叶节点,则进入下一层K = K->firstChild;  //将 K 指向 K 最左边的孩子EnQueue(&sqQueue, K); //入队while (K->nextSibling) {  //判断它是否有兄弟节点K = K->nextSibling;EnQueue(&sqQueue, K);//入队它的兄弟节点(在同一层上)}}}P = P->nextSibling;  //指向下一棵树的根节点}}

 


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部