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

树的遍历

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

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

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++;
        }
    }
}


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

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

分享给朋友:

相关文章

树的存储与遍历—链式存储

一、定义链式存储是表示树结构最直观、最常用的一种方法。它的核心思想是:用链表中的节点来表示树中的每个元素。每个节点不仅包含数据本身,还包含指向其子节点的指针。二、基本结构对于一个普通的树(不一定是二叉...

【题解】士兵训练

【题目描述】某部队进行新兵队列训练,将新兵从一开始按顺序依次编号,并排成一行横队,训练的规则如下:从头开始一至二报数,凡报到二的出列,剩下的向小序号方向靠拢,再从头开始进行一至三报数,凡报到三的出列,...

CSP-J2021年普及组复赛T3——网络连接

【题目描述】TCP/IP 协议是网络通信领域的一项重要协议。今天你的任务,就是尝试利用这个 协议,还原一个简化后的网络连接场景。在本问题中,计算机分为两大类:服务机(Server)和客户机(Clie...

【数据结构】栈(Stack)的介绍

栈是只能在某一端插入和删除的特殊线性表。栈就是一种类似桶堆积物品的数据结构,进行删除和插入的一端称栈顶,另一端称栈底。插入一般称为进栈(PUSH),删除则称为退栈(POP)。栈也称为后进先出表(LIF...

【数据结构】栈—表达式括号匹配

【数据结构】栈—表达式括号匹配

【题目描述】假设一个表达式有英文字母(小写)、运算符(+,—,*,/)和左右小(圆)括号构成,以“@”作为表达式的结束符。请编写一个程序检查表达式中的左右圆括号是否匹配,若匹配,则返回“YES”;否则...

最小生成树—基本概念

一、最小生成树核心概念1. 基本定义一个带权无向连通图的最小生成树,是指从该图中选择若干条边,构成一个包含图中所有顶点的树结构(无环、连通),且所有选中边的权值之和最小。2. 关键性质生成树的本质:包...