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

本文详细介绍了树和森林的各种遍历方法,包括树的先根遍历、后根遍历以及层次遍历,同时也探讨了森林的先序遍历和中序遍历,这些遍历方法与相应二叉树的遍历序列的关系,并通过示例进行了说明。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

树的先根遍历

void PreOrder(TreeNode* R)
{
    if (R != NULL)
    {
        visit(R);
        while (R还有下一个子树T)
            PreOrder(T);
    }
}

树和二叉树的转化后==》

树的先根遍历序列与这棵树相应二叉树的先序序列相同。 \color{red}树的先根遍历序列与这棵树相应二叉树的先序序列相同。 树的先根遍历序列与这棵树相应二叉树的先序序列相同。

A B C D A ( B E F ) ( C G ) ( D H I ) A ( B ( E , K ) F ) ( C G ) ( D H I J ) \begin{array}{ccccccccc}\mathbf{A}&\mathbf{B}&&\mathbf{C}&&\mathbf{D}&\\\mathbf{A}&(\mathbf{B}&\mathbf{E}&\mathbf{F})&(\mathbf{C}&\mathbf{G})&(\mathbf{D}&\mathbf{H}&\mathbf{I})\\\mathbf{A}&(\mathbf{B}&(\mathbf{E},\mathbf{K})&\mathbf{F})&(\mathbf{C}&\mathbf{G})&(\mathbf{D}&\mathbf{H}&\mathbf{I}&\mathbf{J})\end{array} AAAB(B(BE(E,K)CF)F)(C(CDG)G)(D(DHHI)IJ)

树的后根遍历

void PreOrder(TreeNode* R)
{
    if (R != NULL)
    {
        while (R还有下一个子树T)
            PreOrder(T);
		visit(R);
    }
}

树和二叉树的转化后==》

树的后根遍历序列与这棵树相应二叉树的中序序列相同。 \color{red}树的后根遍历序列与这棵树相应二叉树的中序序列相同。 树的后根遍历序列与这棵树相应二叉树的中序序列相同。

B C D A ( E F B ) ( G C ) ( H I J D ) A ( ( K E ) F B ) ( G C ) ( H I J D ) A \begin{array}{cccccccc}&&\text{B}&\text{C}&&&\text{D}&\text{A}\\(&\mathrm{E}&\mathrm{F}&\mathrm{B})&(\mathrm{G}&\mathrm{C})&(\mathrm{H}&\mathrm{I}&\mathrm{J}&\mathrm{D})&\mathrm{A}\\((\mathrm{K}&\mathrm{E})&\mathrm{F}&\mathrm{B})&(\mathrm{G}&\mathrm{C})&(\mathrm{H}&\mathrm{I}&\mathrm{J}&\mathrm{D})&\mathrm{A}\end{array} (((KEE)BFFCB)B)(G(GC)C)D(H(HAIIJJD)D)AA

树的层次遍历

广度优先遍历 \color{green}广度优先遍历 广度优先遍历

3) 层次遍历 \color{red}层次遍历 层次遍历(用队列实现)
①若树非空,则根节点入队
②若队列非空,队头元素出队并访问,同时将该元素的孩子依次入队
③重复②直到队列为空

森林的先序遍历

森林。森林是 m ( m ≥ 0 ) m (m\ge0) m(m0棵互不相交的树的集合。每棵树去掉根节点后,其各个子树又组成森林。

1) 先序遍历森林 \color{red}先序遍历森林 先序遍历森林
若森林为非空,则按如下规则进行遍历:
访问森林中第一棵树的根结点。
先序遍历第一棵树中根结点的子树森林。
先序遍历除去第一棵树之后剩余的树构成的森林。

效果等同于依次对各个树进行先根遍历 \color{red}效果等同于依次对各个树进行先根遍历 效果等同于依次对各个树进行先根遍历

BCD ( B E F ) ( C G ) ( D H I J ) (B(EKL) F) (C G) (D (H M) I J) \begin{aligned} &\text{BCD} \\ &(BEF)(CG)(DHIJ) \\ &\text{(B(EKL) F) (C G) (D (H M) I J)} \end{aligned} BCD(BEF)(CG)(DHIJ)(B(EKL) F) (C G) (D (H M) I J)

效果等同于依次对二叉树的先序遍历 \color{red}效果等同于依次对二叉树的先序遍历 效果等同于依次对二叉树的先序遍历

森林的中序遍历

森林。森林是 m ( m ≥ 0 ) m (m\ge0) m(m0棵互不相交的树的集合。每棵树去掉根节点后,其各个子树又组成森林。

2) 中序遍历森林 \color{red}中序遍历森林 中序遍历森林
若森林为非空,则按如下规则进行遍历:
中序遍历森林中第一棵树的根结点的子树森林。访问第一棵树的根结点。
中序遍历除去第一棵树之后剩余的树构成的森林。

效果等同于依次对各个树进行后根遍历 \color{red}效果等同于依次对各个树进行后根遍历 效果等同于依次对各个树进行后根遍历

B C D ( E F B ) ( G C ) ( H J D ) ( ( K L E ) F B ) ( G C ) ( ( M H ) I J D ) \begin{array}{cccccccc}&&&&\text{B}&&\text{C}&&\text{D}\\(&&&E&\text{F}&\text{B})&(\text{G}&\text{C})&(&\text{H}&\text{J}&\text{D})\\((\text{K}&\text{L}&\text{E})&\text{F}&\text{B})&(\text{G}&\text{C})&((\text{M}&\text{H})&\text{I}&\text{J}&\text{D})\end{array} (((KLE)EFBFB)B)(GC(GC)C)((MD(H)HIJJD)D)

效果等同于依次对二叉树的中序遍历 \color{red}效果等同于依次对二叉树的中序遍历 效果等同于依次对二叉树的中序遍历

知识点回顾与主要考点

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Joanh_Lan

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值