数据结构--树

数据结构--树

@(数据结构)

树是节点的有限集合

基本概念

树.png
  • 双亲(父结点) :A是BCD的双亲,双亲指的是一个结点
  • 孩子(子结点):BCD是A的子结点
  • 度:当前结点直接的孩子,A的度是3,B的度为2,C的度为0
  • 叶子(叶结点):终端结点(C、E、F、G、H)
  • 根(根结点):非终端结点(A、B、D)
  • 有序树:如果E和F不可以换顺序就是有序
  • 无序树:E和F可以换顺序,不影响逻辑就是无序树
  • 祖先:E的 祖先 是 A 、B
  • 子孙:下面全部结点都是A的子孙
  • 深度:从上而下,为一到三层的深度
    • 结点深度:A的结点深度为1,B为2,E为3
    • 树深度:当前树的最大深度

二叉树

所有结点的度都小于等于2

不用的遍历其实就是访问根结点的顺序的不同

前序遍历

前序遍历.png
  • 首先访问根结点
  • 访问顺序 :根结点 --> 左结点 --> 右结点
  • 对于上图的树,前序遍历结果为(忽略结点C):
    • A - B - E - F - D - G - H

中序遍历

中序遍历.png
  • 中间访问根结点
  • 访问顺序:左结点 --> 根结点 --> 右结点
  • 对于上图的树,中序遍历结果为(忽略结点C):
    • E - B - F - A - G - D - H

后序遍历

后序遍历
  • 最后访问根结点
  • 访问顺序: 左结点 --> 右结点 --> 根节点
  • 对于上图的树,后序遍历结果为(忽略结点C):
    • E - F - B - G - H - D - A

数组编码概述

  • 放入数组的顺序就是从上到下,从左到右


    数组与结点的转换.png
  • 关于使用数组来实现二叉树,基本就是通过上图的关系,让数组下标和节点位置产生关联,基本就和线性表中的顺序表实现差不多

链表实现二叉树

  • 之前的文章中有写到了关于线性表中链表的实现,而在二叉树中,链表的实现可以把它想象成是 三链表的实现, 每一个结点都持有着

    1. 自己的父结点指针
    2. 自己的左结点指针
    3. 自己的右结点的指针
  • 关键一点就是对于结点的查找,因为无论是增加还是删除结点都基本运用到查找方法,通过结点不断的指向,一层一层去追溯来找到目标结点。


对于二叉树的实现方面简单略过了,因为基本和线性表中的思路是一致的,重点把握二叉树的概率,以及三种方式的遍历。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 数据结构和算法--二叉树的实现 几种二叉树 1、二叉树 和普通的树相比,二叉树有如下特点: 每个结点最多只有两棵子...
    sunhaiyu阅读 11,572评论 0 14
  • 1. 树 1. 树的定义 树(Tree):是n(n>=0)个节点的有限集,它或为空树(n=0);或为非空树,对于非...
    Lost_Robot阅读 3,723评论 0 1
  • 第一章 绪论 什么是数据结构? 数据结构的定义:数据结构是相互之间存在一种或多种特定关系的数据元素的集合。 第二章...
    SeanCheney阅读 11,078评论 0 19
  • 树的存储结构一(分为顺序存储和链式存储[二叉链表])树的存储结构二 二叉树 二叉树:是n(n≥0)个结点的有限集合...
    不会游泳De鱼阅读 3,831评论 0 0
  • 行米,1984年出生在凤凰古城里,1995年随家人举家南迁到广东,2004年嫁到陕西西安,后来一直在西安生活。 丈...
    蓝朝野阅读 3,555评论 0 0