森林孩子—兄弟链表形式的层次遍历
关于森林(孩子-兄弟链表形式)的层次遍历:它类似于图的广度优先搜索(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; //指向下一棵树的根节点}}
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
