zoukankan      html  css  js  c++  java
  • 二叉树基础

    树(Tree)的基本概念

    节点、根节点、父节点、子节点、兄弟节点;节点、根节点、父节点、子节点、兄弟节点;

    • 一棵树可以没有任何节点,称为空树
    • 一棵树可以只有 1 个节点,也就是只有根节点

    子树、左子树、右子树;

    节点的度(degree):子树的个数;

    树的度:所有节点度中的最大值;

    叶子节点(leaf):度为 0 的节点;

    非叶子节点:度不为 0 的节点;

    层数(level):根节点在第 1 层,根节点的子节点在第 2 层,以此类推(有些教程也从第 0 层开始计算)

    节点的深度(depth):从根节点到当前节点的唯一路径上的节点总数;

    节点的高度(height):从当前节点到最远叶子节点的路径上的节点总数;
    树的深度:所有节点深度中的最大值;
    树的高度:所有节点高度中的最大值;
    数的深度 等于 树的高度;



    **其中有有序树 无序树 森林 二叉树 :真二叉树 满二叉树 完全二叉树 **
    设二叉树的度为0 度为1 度为2的节点的数量分别为n1 n2 n0;总节点的数量为n

    n=n1+n2+n0;
    n-1=n1+2n2;
    n0=n2+1;
    对于二叉树的高度height
    假设满二叉树的高度为 h( h ≥ 1 ),那么
    • 第 i 层的节点数量: 2i−1
    • 叶子节点数量: 2h−1
    • 总节点数量 n
    • n = 2h − 1 = 20 + 21 + 22 + ⋯ + 2h−1
    • 树高度与总节点的关系:h = log2(n + 1)
      遍历是数据结构中的常见操作:把所有元素都访问一遍;
    线性数据结构的遍历比较简单:

    正序遍历
    逆序遍历

    根据节点访问顺序的不同,二叉树的常见遍历方式有 4 种:

    前三种方法调用递归 第四种只能迭代
    前序遍历(Preorder Traversal)中左右
    中序遍历(Inorder Traversal) 左中右 从大到小或者从小到大的遍历
    后序遍历(Postorder Traversal)左右中
    层序遍历(Level Order Traversal)一层一层的遍历

  • 相关阅读:
    用变量构造函数检查变量类型
    HTML5的File API读取文件信息
    jQuery插件中的this指的是什么
    了解babel
    了解.gitignore
    高德地图画正六边形
    编写可维护性的js读书笔记
    百度地图遇到的问题
    实用的两个移动端demo
    git基本操作总结
  • 原文地址:https://www.cnblogs.com/20188703zyj/p/13270089.html
Copyright © 2011-2022 走看看