JS数据结构之二叉树的基础知识

二叉树的基础知识

  • 一、树的基础知识
    • 1.树的定义:
    • 2.通俗的定义:
    • 3.树的一些名词:
    • 4、树的一些特点
  • 二、二叉树
    • 1、二叉树的定义
    • 2、二叉树的性质
    • 3、满二叉树
    • 4、完全二叉树

一、树的基础知识

1.树的定义:


(1)有且只有一个称为根的节点。

(2)有若干个互不相交的子树,这些子树本身也是一棵树。

2.通俗的定义:


(1)树由节点和边组成。

(2)每个节点只有一个父节点但可以有多个子节点。

(3)根节点没有父节点。

3.树的一些名词:


(1)节点:树的节点包含一个数据元素和若干指向其子树的分支

(2)深度(高度):从根节点到最低层节点的层数称之为深度,根节点是第一层。

(3)孩子与双亲:节点的子树的根称为该节点的孩子,相应的该节点称为孩子的双亲。

(4)子孙:以某一节点为根的子树上的任意节点都称为该节点的子孙

(5)叶子节点:没有子节点的节点,也叫终端节点。

(6)非终端节点:即非叶子节点。

(7)度:子节点的个数成为度。(树的度为整个树中含有最多子节点的个数。)

4、树的一些特点

树具有的特点有:
(1)每个结点有零个或多个子结点

(2)没有父节点的结点称为根节点

(3)每一个非根结点有且只有一个父节点

(4)除了根结点外,每个子结点可以分为多个不相交的子树。

二、二叉树

1、二叉树的定义

二叉树是每个结点最多有两个子树的树结构。它有五种基本形态:二叉树可以是空集;根可以有空的左子树或右子树;或者左、右子树皆为空。

2、二叉树的性质


性质1:二叉树第i层上的结点数目最多为2^i-1(i>=1)

性质2:深度为k的二叉树至多有2^k-1个结点(k>=1)

性质3:包含n个结点的二叉树的高度至少为(log2n)+1
性质4:在任意一棵二叉树中,若终端结点的个数为n0,度为2的结点数为n2,则n0=n2+1

3、满二叉树

除最后一层无任何子节点外,每一层上的所有结点都有两个子结点的二叉树 ![在这里插入图片描述](https://img-blog.csdnimg.cn/20200729165548650.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQ0MjIyMjA1,size_16,color_FFFFFF,t_70)

JS数据结构之二叉树的基础知识_第1张图片

4、完全二叉树

定义:一棵二叉树中,只有最下面两层结点的度可以小于2,并且最下层的叶结点集中在靠左的若干位置上,这样的二叉树称为完全二叉树。

JS数据结构之二叉树的基础知识_第2张图片

特点:叶子结点只能出现在最下层和次下层,且最下层的叶子结点集中在树的左部。显然,一棵满二叉树必定是一棵完全二叉树,而完全二叉树未必是满二叉树。
1、具有n个节点的完全二叉树的深度为 k=log2n 。

2、完全二叉树最后一层的节点数为:n−(2k−1)=n+1−2k

3、将完全二叉树自顶而下,同一层自左向右编号,则有:

4、如果i=1,i为根,无双亲;如果i>1,双亲为结点i(i/2)向下取整

5、如果2i<=n,结点i的左孩子为结点2i;否则无左孩子

6、如果2i+1<=n,结点i的右孩子为结点2i+1,否则无右孩子

你可能感兴趣的:(JS数据结构,数据结构,javascript,html,html5)