当前位置:首页 > C++目录 > 正文内容

树的遍历

亿万年的星光4年前 (2021-11-27)C++目录19865

在应用树结构解决问题时,往往要求按照某种此项获得树中全部结点的信息,这种操作叫做树的遍历。遍历的方法有很多种。常用的有:

A. 先序遍历:先访问根结点,再从左到右按照先序思想遍历各子树。

B. 后序遍历:先从左到右遍历各个子树,再访问根结点。

C.层次遍历:按层次从小到大逐个访问,同一层次按照从左到右的次序。

D.叶结点遍历:有时把所有的数据信息都存放叶结点中,而其余结点都是用来表示数据之间的某种分支或层次关系,这种情况就用这种方法。


A,B用的思想就是我们常说的“深度优先遍历”

void tral(tree t,int m)
{
    if(t)
    {
        cout<<t->data<<endl;
        for(int i=0;i<m;i++){
            tral(t->child[i],m);
        }
    }

}


C方法实际上就是我们常说的“广度优先搜索”思想如下:若某个结点别访问,则该结点的子结点应记录,等待被访问。顺序访问各层次上结点,直至不再有未访问过的结点,为此,引入一个队列来存储等待访问的子结点,设一个队首和队尾指针分别表示出队、进队的下标。程序框架如下:

const int n=100;
int head,tail,i;
tree q[n];
tree p;
void work()
{
    tail=head=1;
    q[tail]=t;
    tail++; //队尾为空
    while(head<tail){
        p=q[head]
        head++;
        cout<<p->data<<" ";
        for(i=0;i<m;i++)
        if(p->child[d])
        {
            q[tail]=p—>child[i];
            tail++;
        }
    }
}


    扫描二维码推送至手机访问。

    版权声明:本文由青少年编程知识记录发布,如需转载请注明出处。

    分享给朋友:

    相关文章

    【高级篇】C++ 中string的用法

    【高级篇】C++ 中string的用法

    0.概述string是C++标准库的一个重要部分,本意是字符串,和字符数组不同的是,字符数组是通过一个一个字符模拟的字符串,而string本身就是字符串,string在处理字符串问题时,十分强大。1....

    【数据结构】队列—基本操作

    【数据结构】队列—基本操作

    一、C++实例分析       C++队列queue模板类的定义在<queue>头文件中,queue 模板类需要两个模板参数,一个是元素类型,一个容...

    C++中的逻辑与运算

    样例#include<iostream> using namespace std; int main(){ cout<<(1&1)...

    DEVC++如何支持C++11

    DEVC++如何支持C++11

    DEVC++默认开启C++11,需要手动添加C++11支持。DEVC++需要使用高一点的版本,DEVC++5.11下载地址:(1)  官方下载地址: Dev-C++ downloa...

    二维数组的差分

    一、基本概念二维数组差分是一种高效处理区间修改操作的数据结构技巧,常用于解决矩阵区域增减问题。差分是前缀和的逆运算,对于二维数组,差分数组 diff[i][j] 表示原数组 a[i][j] 与 a[i...

    【数据结构】优先队列(1)

    优先队列(Priority Queue)是一种特殊的队列,它 不遵循“先进先出”(FIFO) 的原则,而是 按照优先级(Priority) 来出队。优先级高的元素 先出队,优先级低的元素 后出队。1....