数据结构之树与二叉树
来源:互联网 发布:淘宝联盟返利靠谱吗 编辑:程序博客网 时间:2024/06/07 16:58
树的几个概念:
树(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)),与二分查找相差不多
0 0
- 数据结构之树与二叉树
- 数据结构之树与二叉树
- 数据结构笔记之树与二叉树
- 数据结构与算法之二叉树遍历
- 数据结构之二叉树创建与遍历
- 数据结构与算法之二叉树
- 算法与数据结构之二叉树
- 数据结构之红黑树与平衡二叉树
- 数据结构与算法之二叉树
- 数据结构与算法04 之二叉树
- 数据结构与算法之二叉树
- <数据结构与算法>之二叉查找树
- 数据结构与算法之八(二叉树)
- 数据结构之二叉树
- 数据结构之二叉树
- 数据结构之二叉树
- 数据结构之二叉树
- 数据结构之二叉树
- 耗时widget
- CISCO 零日漏洞 CVE-2016-6415,由NSA方程组泄露档案中探得
- vim 技巧备忘
- KVC和KVO
- 异常总结
- 数据结构之树与二叉树
- 完美解决C#Webbrowser控件设置Cookie问题
- 第四周项目1-建立单链表
- C#入门经典第6版学习 十三
- iOS如何获取iOS应用中所有图片资源
- Android的BroadcastReciver收不到Broadcast(系统广播)的原因之一
- 意外——窥视到朝鲜互联网基础设施
- 关于C++ 里struct 和 class的区别
- Maven变量及常见插件配置详解