• 树的遍利策略


    遍利树策略

    数据模型

    1. ArrayDeque(数组结构,不能存null,可作栈或双端队列)
    2. LinkedList(链式结构,可作栈或双端队列)
    • 下图中的顶点按照访问的顺序编号,按照 1-2-3-4-5 的顺序来比较不同的策略。

    广度优先遍利(BFS)

    • 广度优先,即按照层序遍利
    • 方案一
      • 使用两层嵌套循环。外层循环迭代树的层级,内层循环迭代每层上的节点
    • 方案二
      • 可以使用一层循环实现 BFS。将要访问的节点添加到队列中,使用 分隔符(例如:空节点)把不同层的节点分隔开。分隔符表示一层结束和新一层开始。

    深度优先遍利(DFS)

    • 该策略以深度 为优先级,从 开始,一直到达某个确定的叶子节点 ,然后再返回根到另一个分支 ,分三种模型
      • 前序遍利 :top → Bottom,left → right
      • 中序遍利 :left → node → right
      • 后序遍利 :Bottom → top,left → right

    树特点总结

    • 访问 :即业务逻辑操作,如打印。递归 :直至到递归出口处前,不会对元素进行访问 操作

    • (DFS)preOrder:top→bottom left→right,

      • 本质:左子树为例,对每个元素自顶向下进行 访问 操作,然后自底向上 以每个遍历过的左子树为根 ,构造树;根节点右子树可假设为一棵独立树,重复前一步操作
    • (DFS)inOrder:bottom,left→node→right,以每棵子树为基本单位,自底向上

      • 本质:左子树为例,递归到底 对每个元素自底向上进行 访问 操作,自底向上构造子树 。根结点右子树假设 为独立子树,重复上一步操作
    • (DFS)postOrder:bottom→top left→right,

      • 本质:左子树为例,递归到底 ,从底部开始以子树为单位从左至右再对每个元素进行访问操作;根结点右子树可假设为一棵独立树,重复前一步操作
    • BFS:top→bottom left→right

      • 本质:以整棵树为单位,从上至下,按层级从左至右对每个元素进行访问操作
      • 例子:BST的层序遍历结果所有元素为升序排列
  • 相关阅读:
    ecplise maven springmvc工程搭建
    【转载】钩子函数与回调函数
    【转载】Vue项目中的文件/文件夹命名规范
    联想本win10 virtualbox 安装centos
    【vue】router-link 与 router-view
    【vue】import的使用
    【vue】父组件主动调用子组件 /// 非父子组件传值
    【vue】vue组件的自定义事件
    修改MongoDB密码
    用du查看文件详情
  • 原文地址:https://www.cnblogs.com/luckyCoder/p/12732983.html
Copyright © 2020-2023  润新知