数据结构——树和森林的遍历

——本节内容为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)效果等同于依次对各个树进行后根遍历。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值