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

树的遍历

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

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

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


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

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

    分享给朋友:

    相关文章

    树的存储与遍历—顺序存储

    顺序存储使用数组来存储二叉树节点,通过数组下标表示节点间的父子关系,一般适用于完全二叉树。1.存储规则根节点存储在索引 0 位置对于索引为 i 的节点:左子节点索引:2*i + 1右子节点索引:2*i...

    CSP-J2021年普及组复赛T2——插入排序

    CSP-J2021年普及组复赛T2——插入排序

    【题目描述】插入排序是一种非常常见且简单的排序算法。小 Z 是一名大一的新生,今天 H 老 师刚刚在上课的时候讲了插入排序算法。 假设比较两个元素的时间为 O(1),则插入排序可以以 O(n 2...

    【数论】常见的距离度量方法

    【数论】常见的距离度量方法

    一、欧式距离欧式距离(Eucliden Metric,也是欧几里得度量)是一个通常采用的距离定义,旨在m维空间中两个点之间的真实距离,或者向量的自然长度(即该点到原点距离)。在二维和三维空间中的欧氏距...

    数组的不确定长度输入

    0.前言我们在学习数组的时候一般都会告诉你数组的长度,然后for循环去遍历。但是有一类问题是没有n的,也就是没有告诉长度的。1.方法第一种:(数组)#include<iostream>...

    【STL】二分查找函数 lower_bound 和 upper_bound

    一、 lower_bound【功能】在数组a中从a[begin]开始到a[end - 1]按照cmp函数来比较进行二分查找第一个大于等于k的数的地址,如果有第一个大于等于k的数则返回该数的地...

    编写第一个C++程序

    编写第一个C++程序

    前面的文章介绍了Dev-C++的下载安装:【入门篇】>>> DEVC++下载、安装、简单使用 - 青少年编程知识记录 (codecoming.com)今天讲一下如何使用Dev-C++...