——本节内容为Bilibili王道考研《数据结构》P50视频内容笔记。


目录

一、树的遍历

1.先根遍历

2.后根遍历

3.层次遍历(用队列实现)

二、森林的遍历

1.先序遍历

2.中序遍历


一、树的遍历

1.先根遍历

(1)定义:若树非空,先访问根结点,再依次对每棵子树进行先根遍历。

(2)伪代码:

void PreOrder(TreeNode *R)
{
    if(R!=NULL)
    {
        visit(R);                //访问根结点
        while(R还有下一个子树T)
            PreOrder(T);         //先根遍历下一棵子树
    }
}

(3)树的先根遍历序列与这棵树相应的二叉树先序序列相同。

(4)树的先根遍历也称深度优先遍历。


2.后根遍历

(1)定义:若树非空,先依次对每棵子树进行后根遍历,最后再访问根结点。

(2)伪代码:

void PostOrder(TreeNode* R)
{
	if (R != NULL)
	{
		while (R还有下一棵子树T)
			PostOrder(T);			//后根遍历下一棵子树
		visit(R);					//访问根结点
	}
}

(3)树的后根遍历序列与这棵树相应二叉树的中序序列相同。

(4)树的后根遍历也称深度优先遍历。


3.层次遍历(用队列实现)

(1)定义:

        ①若树非空,则根结点入队;

        ②若队列非空,则队头元素出队并访问,同时将该元素的孩子依次入队;

        ③重复②直到队列为空;

(2)层次遍历也称广度优先遍历;

(3)树的后根遍历序列与这棵树相应二叉树的中序序列相同。


二、森林的遍历

1.先序遍历

(1)定义:若森林为非空,则按如下规则进行遍历:

        ①访问森林中第一棵树的根结点;

        ②先序遍历第一棵树中根结点的子树森林;

        ③先序遍历除去第一棵树之后剩余的树构成的森林。

(2)效果等同于依次对各个树进行先根遍历。


2.中序遍历

(1)定义:若森林为非空,则按如下规则进行遍历:

        ①中序遍历森林中第一棵树的根结点的子树森林;

        ②访问第一棵树的根结点;

        ③中序遍历除去第一棵树之后剩余的树构成的森林。

(2)效果等同于依次对各个树进行后根遍历。

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐