• 二叉树的概念、算法简介及树的平衡


    在计算机科学中,树由称为结点的元素按照层次结构的方式组织而成。层次结构最顶端的结点称为根。与根结点直接相连的结点称为根的子结点,通常子结点本身也有属于它们自己的子结点。除了根结点外,在这个层次体系中的每个结点都有唯一的父结点,也就是与其直接相连的上级结点。

    一个节点拥有多少个子节点取决于树的类型,这个量值称为树的的分支因子,它决定了当插入结点时树的分支扩展的速度。

    二叉树是一种相对简单但功能强大的树,其树的分支因子值为2。

    二叉树的介绍

    二叉树是一种将结点按照层次结构组织起来的数据结构,每个结点最多只有两个与它直接相关联的子结点。直接连接在结点下方的那个结点称为子结点,而与每个子结点直接相连的上方结点称为父结点。结点也有兄弟、子孙和祖先。一个结点的兄弟结点是它的父亲结点的其他子结点。一个结点的子孙结点是其所有分支下的结点。而结点的祖先结点则是在该结点与根结点之间路径上的所有结点。

     

     二叉树中的每一个结点都包含3部分:一个数据成员和左右两个指针。

    通过这种3个成员的结构体,将每个结点的左右指针分别指向该结点的子结点,以此来构建一棵二叉树。如果某个结点没有对应的左子结点或右子结点,就将相应的指针设置为NULL。这种方法便于标识出一个分支的结束。

    树的分支是一系列的结点,从根结点开始到某个叶子结点结束。

    叶子结点位于树的边缘,且没有子结点。多颗树组成的集合称为森林。

    树的4种周游算法

    1、先序遍历

    给定一颗树,按照先序遍历的方式,首先访问它的根结点,然后是左子结点,最后是右子结点。按照从左到右的方式依次遍历各个结点,以相同的方式将左子结点和右子结点当做新的子树的根。

    先序遍历是按照深度优先的方式遍历结点的。

    2、中序遍历

    给定一颗树,按照中序遍历的方式,首先访问左子结点,然后是根结点,最后是右子结点。按照从左到右的顺序依次访问各个结点,以相同的方式将左子结点和右子结点当做新的子树的根。

    3、后序遍历

    给定一颗树,按照后序遍历的方式,首先访问左子结点,然后是右子结点,最后是根结点。按照从左到右的顺序依次访问各个结点,以相同的方式将左子结点和右子结点当做新的子树的根。

    4、层级遍历

    要用层级遍历周游一颗树,首先访问树的根,然后依次向下层处理,按照从左到右的顺序访问每层的结点。层级遍历运用了广度优先的策略。

     

     树的平衡

    对于给定数量的结点,保证树的高度尽可能的短的过程叫做树的平衡。这意味着,在结点加入下一层之前必须保证本层结点满额。正式的说法是,如果满足树的所有叶子节点都在同一层上,或者所有叶子结点都在最后两层上,且倒数第二层是满的,则这颗树是平衡的。

    如果一颗平衡树最后一层的所有叶子结点都在最靠左的位置上,则称这颗树是左平衡的。可以利用左平衡二叉树来帮助实现堆和优先级队列。

  • 相关阅读:
    Linux 信号量之Posix有名字的信号量
    Linux 读写锁
    linux 互斥锁和条件变量
    linux 线程基础
    linux 进程通信之 守护进程
    linux 进程通信之 信号
    linux 进程通信之 mmap
    linux 进程通信之 管道和FIFO
    form表单标签(非常重要,必须掌握)
    微信支付问题汇总
  • 原文地址:https://www.cnblogs.com/idreamo/p/8097324.html
Copyright © 2020-2023  润新知