• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
flydoging
博客园    首页    新随笔    联系   管理    订阅  订阅

树

前言

  二叉查找树(binary search tree)的绝大部分操作的平均时间为O(logN),性能比较好

树的相关概念

  递归定义:一个树由一些节点组成的集合(可以为空),若不为空,则树由根节点与零个或多个子树组成.因此树是由N个节点与N-1条边组成的结构,除根节点外其他节点均存在一条有方向的边(由父节点指向子节点).

  路径:ni到nk的路径,即i<=j<k时,存在序列:ni,nj,nj+1,nk,且nj为nj+1的父节点,则这条路径的所经历的边的数量为路径的长度

  深度:一个节点的深度为从根节点到该节点的唯一路径的长度,树的深度为某一叶子节点的深度,即根节点到该叶子节点的路径的长度为最大值

  高度:从该节点开始,到一个叶子节点的一条最长路径的长度,树的高度为根节点的高度,即从根节点到叶子节点的路径长度的最大值,所以树的高度等于树的深度

  节点分类:根节点/子节点/父节点/兄弟节点/祖父节点/孙子节点

树的实现

  class TreeNode<T>{

    private T value;// 节点的值对象

    private TreeNode firstChild;// 第一子节点

    private TreeNode nextSibling;// 下一个兄弟节点

  }

树的先序遍历与后序遍历

  先序遍历:遍历处理节点时先处理父节点后在遍历子节点

  后序遍历:遍历处理节点时先处理父节点下的子节点后再完成对父节点的处理

二叉树

  二叉树的每个节点的子节点数量不超过2,二叉树的深度比总节点数N小的多

二叉树的遍历

  表达式树:叶子节点为操作数,其它节点为运算符的树,可以根据后序遍历转换为后缀表达式

  先序遍历:父节点-->>左节点-->>右节点

  后序遍历:左节点-->>右节点-->>父节点

  中序遍历:左节点-->>父节点-->>右节点

posted @ 2019-02-01 16:07  flydoging  阅读(111)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3