数据结构 | 树之二叉树

作者: 水土七口刀 | 来源:发表于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)

相关文章

  • 数据结构算法之美-23讲二叉树基础(上):树、二叉树

    数据结构算法之美-23讲二叉树基础(上):树、二叉树 特别备注 本系列非原创,文章原文摘自极客时间-数据结构算法之...

  • 二叉树的基本算法

    二叉树的基本算法 树、二叉树 的基本概念,参考数据结构算法之美-23讲二叉树基础(上):树、二叉树[https:/...

  • 数据结构 - 概要

    数组 链表 堆/栈/队列 树 数据结构 - 二叉树数据结构 - 二叉查找树数据结构 - 平衡二叉树数据结构 - A...

  • Java数据结构之树

    数据结构之 树 二叉树每个节点最多有两个子树的树结构,在二叉树的概念下又衍生出满二叉树和完全二叉树。满二叉树除最后...

  • 关于函数递归和迭代的转化, 及尾递归相关知识的接触和思考

    javascript实现数据结构: 树和二叉树,二叉树的遍历和基本操作 js 二叉树 【数据结构与算法】深入浅出递...

  • 二叉树非递归遍历

    二叉树的非递归遍历 二叉树是一种非常重要的数据结构,很多其它数据结构都是基于二叉树的基础演变而来的。对于二叉树,有...

  • 数据结构之二叉树(一)——绪论

    前言 二叉树是数据结构中一种重要的数据结构,也是树表家族最为基础的结构,包括完全二叉树、满二叉树、二叉查找树、AV...

  • IOS基础知识-算法与数据结构篇

    数据结构 通常可以分为四类: 数据结构的存储方式: 链表可分为: 什么是树 什么是二叉树 二叉树遍历 在二叉树的一...

  • python实现二叉树的遍历

    二叉树是一种非常重要的数据结构,很多其它数据结构都是基于二叉树的基础演变而来的。对于二叉树,有深度遍历和广度遍历,...

  • MySQL索引

    索引是帮助MySQL高效获取数据的排好序的数据结构 索引数据结构: 二叉树 红黑树 哈希 B-Tree 二叉树容易...

网友评论

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

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