数据结构之树与二叉树

树的几个概念:

树(tree)是包含n(n>0)个结点的有穷集,其中:
(1)每个元素称为结点(node);
(2)有一个特定的结点被称为根结点或树根(root)。
(3)除根结点之外的其余数据元素被分为m(m≥0)个互不相交的集合T1,T2,……Tm-1,其中每一个集合Ti(1<=i<=m)本身也是一棵树,被        称作原树的子树(subtree)。

  节点的度:一个节点含有的子树的个数称为该节点的度;

 树的高度或深度:树中节点的最大层次;

数据结构之树与二叉树_第1张图片


树的表示形式

定义接口:

数据结构之树与二叉树_第2张图片

1、双亲表示法

2、孩子表示法

3、长子兄弟表示法

二叉树:

二叉树是每个节点最多有两个子树的树结构。通常子树被称作“左子树”(left subtree)和“右子树”(right subtree)。

二叉树常被用于实现二 叉查找树和二叉堆。

树到二叉树的变换

数据结构之树与二叉树_第3张图片

二叉树分类:

二叉树、完全二叉树、满二叉树


node节点结构图

数据结构之树与二叉树_第4张图片

node结点类

数据结构之树与二叉树_第5张图片

二叉树类

数据结构之树与二叉树_第6张图片

     先序遍历

首先访问根,再先序遍历左(右)子树,最后先序遍历右(左)子树

    中序遍历

首先中序遍历左(右)子树,再访问根,最后中序遍历右(左)子树
后序遍历
首先后序遍历左(右)子树,再后序遍历右(左)子树,最后访问根
    遍历用递归实现相对很简单,用迭代实现则需要借助栈结构实现
在一个有序二叉树下,中序遍历很有意义,中序遍历也为一个从小到大的排列 好 
中序遍历等到的结果也是结点在底部做的映射
比如:
数据结构之树与二叉树_第7张图片

     二叉树的相关公式:

   在二叉树中,第i层的结点总数不超过2^(i-1);
  深度为h的二叉树最多有2^h-1个结点(h>=1),最少有h个结点;
   对于任意一棵二叉树,如果其叶结点数为N0,而度数为2的结点总数为N2,则N0=N2+1;
  具有n个结点的完全二叉树的深度为int(log2n)+1 

   

   二叉树查找效率

    平衡二叉树:棵空树或它的左右两个子树的高度差的绝对值不超过1,并且左右两个子树都是一棵平衡二叉树,查找时间的时间复杂度为O(log2n)
  平衡二叉树的定义:
  平衡二叉树(Balanced Binary Tree)又被称为AVL树(有别于AVL算法),且具有以下性质:它是一 棵空树或它的左右两个子树  的高度差的绝对值不超过1,并且左右两个子树都是一棵平衡二叉树
  对于一般的二叉搜索树(Binary Search Tree),其期望高度(即为一棵平衡树时)为log2n,其各操作的时间复杂度(O(log2n)),与二分查找相差不多


你可能感兴趣的:(数据结构,算法,数据结构,二叉树,树)