zoukankan      html  css  js  c++  java
  • 树、森林的遍历

    树、森林的遍历

    树的先根遍历

    //树的先根遍历
    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. 中序遍历除去第一棵树之后剩余的树构成的森林。

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

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

  • 相关阅读:
    《人月神话》阅读笔记02
    学习进度条-4
    课堂作业3
    MySql 8.0及对应驱动包匹配注意点
    关于Ubuntu中Could not get lock /var/lib/dpkg/lock解决方案
    STM32之ADC配置,ADC_Mode模式理解
    STM32串口中断的方式发送
    RTC 与RCC 之间的关系
    stm32 MDK5软件仿真之查看io口输出
    STM32 PWM学习
  • 原文地址:https://www.cnblogs.com/jev-0987/p/13202205.html
Copyright © 2011-2022 走看看