• 2.12 Go二叉树数据结构的应用


    2.12 Go二叉树数据结构的应用

    树的定义和基本术语

    树的定义:

    树是n(n>=0)个节点的有限集合T

    一颗非空树需要满足的两个条件:

    • 有且仅有一个根节点(root)

    • n>1时,其余节点可分为m(m>=0)个互不相交的有限集合T1T2,……,Tm,其中每一个集合本身又都是一棵树,并且称为根的子树(Subtree

    特点:

    树的定义是递归的,树是一种递归数据结构。

    树的其他基本术语:

    • 节点的度:树中每个节点具有的子树数,或后继节点数称为该节点的度。--->和链表类似,拥有前驱节点和后继节点

    • 树的度:树中所有节点的度的最大值称为树的度。

    • 分支节点:度大于0的节点称为分支节点或非终端节点。

    • 叶子节点:度为0的节点称为叶子节点或终端节点。

    • 儿子节点:一个节点的后继称为该节点的儿子节点。

    • 父亲节点:一个节点称为其后继节点的父亲节点。

    • 子孙节点:一个节点的所有子树中的节点称为该节点的子孙节点。

    • 祖先节点:从根节点到达一个节点的路径上,通过的所有节点称为该节点的祖先节点。

    • 兄弟节点:具有同一父亲的节点相互称为兄弟节点。

    • 节点的层数:树是一种层次结构,根节点为第一层,其儿子节点为第二层,以此类推可以得到每个节点的层数。

    • 树的深度:树中节点的最大层数称为树的深度或高度。

    • 森林:0个或多个不相交的树的集合称为森林。

    二叉树简介

    二叉树的特点:

    • 二叉树中每个节点最多有两棵子树。称为左子树和右子树

    • 左子树和右子树是有顺序的,有左右之分,次序不能随意颠倒;

    • 即使某个节点只有一个子树,也要区分左右子树。

    特殊的二叉树:

    • 斜树

    • 满二叉树

    • 完全二叉树


    斜树

    • 所有的节点只有左子树则称为左斜树

    • 所有节点只有右子树则称为右斜树

    满二叉树

    • 一棵二叉树中,所有的分支结点都存在左子树和右子树

    • 所有的叶子结点都在同一层上

    满二叉树的特点:

    • 叶子只能出现在最下一层

    • 非叶子结点度一定是2

    • 在同样深度的二叉树中,满二叉树的结点个数最多,叶子树最多

    完全二叉树

    • 一棵二叉树中,除最后一层外,若其余各层都是满的

    • 最后一层要么是满的,要么在右边缺少若干个连续的节点

    • 完全二叉树不一定是满二叉树--->不一定非要左右子树完全

    完全二叉树的特点:

    • 叶子结点只能出现在最下一层(满二叉树继承而来)。

    • 最下层叶子结点一定集中在左部连续位置。

    • 倒数第二层,如有叶子节点,一定出现在右部连续位置。

    • 同样结点树的二叉树,完全二叉树的深度最小。

    二叉树的连接存储结构

    二叉树的存储方法:

    1. 顺序存储--->底层数据结构是数组

    2. 链接存储--->底层数据结构是链表

    3. 线索树存储--->底层数据结构是链表

     

  • 相关阅读:
    JS一些小算术、1加到50、乘法口诀表、买鸡等
    全选、全不选和反选
    遇重大灾害,缅怀在灾害中遇难的同胞,网站变灰色
    js屏蔽浏览器(IE和FireFox)的刷新和右键等功能
    PHP遍历文件夹下的文件和获取到input name的值
    Glide加载圆角
    android studio的git笔记
    SrollView与RecyclerView
    getIdentifier笔记
    Socket编程基础学习笔记
  • 原文地址:https://www.cnblogs.com/JunkingBoy/p/15944349.html
Copyright © 2020-2023  润新知