码迷,mamicode.com
首页 > 其他好文 > 详细

树、森林的遍历

时间:2020-06-28 13:28:31      阅读:75      评论:0      收藏:0      [点我收藏+]

标签:规则   访问   load   技术   lazy   png   http   广度   深度   

树、森林的遍历

技术图片

树的先根遍历

技术图片

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

技术图片

将上述的树转换为二叉树

技术图片

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

树的后根遍历

技术图片

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

技术图片

将上述树转换为二叉树

技术图片

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

树的层次遍历

可以称为:广度优先遍历

需要用到辅助队列来实现。

  1. 若树非空,则根节点入队
  2. 若队列非空,队头元素出对并访问,同时将该元素的孩子一次入队
  3. 重复2直到队列位空

技术图片

先根和后根遍历可以称为:深度优先遍历

森林的先序遍历

若森林非空,则按如下规则进行遍历:

  1. 访问森林中第一棵树的根节点
  2. 先序遍历第一棵树中根节点的子树森林。
  3. 先序遍历除去第一棵树之后剩余的树构成的森林

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

效果等同于依次对二叉树的先序遍历

森林的中序遍历

若森林非空,则按如下规则进行遍历:

  1. 中序遍历森林中第一颗树的根节点的子树森林。
  2. 访问第一棵树的根节点。
  3. 中序遍历除去第一棵树之后剩余的树构成的森林。

效果等同于依次对各个树的后根遍历

效果等同于依次对二叉树的中序遍历

树、森林的遍历

标签:规则   访问   load   技术   lazy   png   http   广度   深度   

原文地址:https://www.cnblogs.com/jev-0987/p/13202205.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!