zoukankan      html  css  js  c++  java
  • 树结构

    一、 树

    1. 树的定义

      树结构是一种非常重要的非线性结构,该结构中的一个数据元素可以有两个或两个以上的直接后继元素;它是n(n>=0)个结点的有限集合,当n=0时称为空树。在任意飞空树中有且仅有一个称为根的结点;

      树的基本概念

      a. 双亲、孩子和兄弟。结点的子树的根称为该结点的孩子,该结点称为其子结点的双亲(parent)。具有相同双亲的结点互为兄弟。

      b. 结点的度。一个结点的子树的个数即为该结点的度。度数最大的结点的度称为树的度。

      c. 叶子节点。度为0的节点,也称终端结点。

      d. 内部结点。度不为0的节点(包括根节点),也称分支结点或非终端结点。除根节点以外,分值结点也称为内部结点。

      e. 结点的层次。根为第一层,根的孩子为第二层,依此类推。

      f. 树的高度。一棵树的最大层数记为树的高度(或深度)。

      g. 有序(无序)树。若将树中结点的各子树看成是从左到右具有次序的,即不能交换,则称为改树为有序树,否则称为无序树。

    树的遍历:

    前序遍历:125673489(10)  后序遍历:567239(10)841  层次排列:123456789(10)前序遍历:125673489(10)

    后序遍历:567239(10)841

    层次排列:123456789(10)

     

    2. 二叉树的定义

      二叉树是n(n>=0)个结点的有限集合,它或者是空树(n=0),或者是由一个根节点及两棵不相交的且分别称为左、右子树的二叉树所组成。

    二叉树和树是两个完全不同的概念,二叉树并不是特殊的树,树和二叉树的区别如下:

      a. 二叉树中结点的子树要区分左子树和右子树,即使在结点只有一颗子树的情况下,也要明确指出该子树是左子树还是右子树。

      b. 二叉树结点最大度为2,而树中不限制结点的度数。

      

      二叉树的性质:

      a. 二叉树第i层(i>=1)上最多有2i-1个结点。

      b. 高度为k的二叉树最多有2k-1个结点(k>=1)。

      c. 对于任何一颗二叉树,若其终端节点数为n0,度为2的结点数为n2,则n0=n2+1。

      d. 具有n个结点的完全二叉树的深度为⌊log2n⌋+1(“⌊⌋”表示向下取整)

      e. 对一棵有n个结点的完全二叉树的所有结点按层次自上而下、自左至右进行编号,则对于在任一结点i(1<=i<=n)有:

        ① 若i=1,则结点i是二叉树的根,无双亲;若i>1,则其双亲为⌊i/2⌋。

        ② 若2i>n,则结点i没有左孩子,否则其左孩子为2i。

        ③ 若2i+1>n,则结点i没有右孩子,否则其右孩子为2i+1。

      满二叉树、完全二叉树、非完全二叉树:

     二叉树的遍历:

    前序遍历:12457236        

    中序遍历:42785136

    后序遍历:48752631

    层次遍历:12345678

      所谓的前、中、后指的是根节点的访问顺序。中序遍历中根节点左边的都是它的左子树结点,右边都是右子树结点;同样,将2看做左子树的根节点的时候,2左边的都是它的左子树结点,右边的也都是它的右子树结点,依此类推。

    3. 二叉树和树的转换

      请移步:树转换为二叉树小技巧

  • 相关阅读:
    [JavaScript] 数组去重
    [JavaScript] console.log只在查看时才会读取这个打印的对象,并把此刻相关属性和值显示出来
    [Vuejs] 点击单选框触发两次点击事件的处理
    [Vuejs] 给ref赋值需要注意的问题
    [Vuejs] Vue解决代理设置导致浏览器Session丢失的问题
    [Vuejs] 在vue各个组件中应用全局scss变量
    [JavaScript] 跳出循环方法总结
    [JavaScript] 根据指定宽度截取字符串
    [Element-UI] 使用Element-UI的DateTimePicker组件报错:Cannot read property 'getHours' of undefined
    [Vuejs] 组件 v-if 和 v-show 切换时生命周期钩子的执行
  • 原文地址:https://www.cnblogs.com/ImaY/p/4276498.html
Copyright © 2011-2022 走看看