您的位置:首页 > 理论基础 > 数据结构算法

数据结构之树与二叉树

2016-09-22 11:12 232 查看
树的几个概念:

树(tree)是包含n(n>0)个结点的有穷集,其中:

(1)每个元素称为结点(node);

(2)有一个特定的结点被称为根结点或树根(root)。

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


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









树的表示形式
定义接口:



1、双亲表示法
2、孩子表示法
3、长子兄弟表示法

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

树到二叉树的变换




二叉树分类:
二叉树、完全二叉树、满二叉树

node节点结构图



node结点类



二叉树类




     先序遍历

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


    中序遍历

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

后序遍历

首先后序遍历左(右)子树,再后序遍历右(左)子树,最后访问根
    遍历用递归实现相对很简单,用迭代实现则需要借助栈结构实现

在一个有序二叉树下,中序遍历很有意义,中序遍历也为一个从小到大的排列 好 

中序遍历等到的结果也是结点在底部做的映射

比如:



     二叉树的相关公式:

   在二叉树中,第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)),与二分查找相差不多
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  数据结构 二叉树