数据结构 | 树之二叉树

作者: 水土七口刀 | 来源:发表于2020-03-18 09:15 被阅读0次

    • 树在计算机科学的各个领域中被广泛应用,包括操作系统,图形学,数据库系统和计算机网络。树结构和自然界的树有许多相似的地方,也有根、枝和叶,它们的不同之处在于计算机中的树结构根在顶部而叶子则在底部。

    二叉树

    • 二叉树是每个结点最多有两个子树的树结构。

    二叉树的遍历

    • 前序遍历(preorder):在前序遍历中,我们先访问根节点,然后递归地前序遍历访问左子树,再递归地前序遍历访问右子树。
    • 中序遍历(inorder):在中序遍历中,我们递归地中序遍历访问左子树,然后访问根节点,最后再递归地中序遍历访问右子树。
    • 后序遍历(postorder):在后序遍历中,我们先递归地后序遍历访问左子树和右子树,最后访问根节点。

    完全二叉树

    • 若设二叉树的高度为h,除第h层外,其它各层(1~h-1)的结点数都达到最大个数,第h层有叶子结点,并且叶子结点都是从左到右依次排布,这就是完全二叉树。

    满二叉树

    • 除了叶结点外每一个结点都有左右子叶且叶子结点都处在最底层的二叉树。

    平衡二叉树

    • 平衡二叉树又被称为AVL树(区别于AVL算法),它是一棵二叉排序树,且具有以下性质:
      • 它是一棵空树或它的左右两个子树的高度差的绝对值不超过1,并且左右两个子树都是一棵平衡二叉树。

    二叉树性质

    • 在非空二叉树中,第i层的结点总数不超过2^{i-1} , i>=1
    • 深度为h的二叉树最多有2^h-1个结点(h>=1),最少有h个结点;
    • 对于任意一棵二叉树,如果其叶结点数为N_0,而度数为2的结点总数为N_2,则N_0=N_2+1
    • 具有n个结点的完全二叉树的深度为\lfloor log_2n\rfloor+1(注:向下取整)
    • 有N个结点的完全二叉树各结点如果用顺序方式存储,则结点之间有如下关系:
      1. I为结点编号则如果I>1,则其父结点的编号为I/2
      2. 如果2*I<=N,则其左孩子的编号为2*I;若2*I>N,则无左孩子;
      3. 如果2*I+1<=N,则其右孩子的结点编号为2*I+1;若2*I+1>N,则无右孩子。
    • 给定N个结点,能构成h(N)种不同的二叉树。h(N)为卡特兰数的第N项,即h(n)=C(2*n,n)/(n+1)

    相关文章

      网友评论

        本文标题:数据结构 | 树之二叉树

        本文链接:https://www.haomeiwen.com/subject/ahttyhtx.html