LintCode 关于二叉树问题的总结
来源:互联网 发布:vb automation 错误 编辑:程序博客网 时间:2024/06/05 11:24
1.树的定义
树:n(n≥0)个结点的有限集合。当n=0时,称为空树;任意一棵非空树满足以下条件:
⑴ 有且仅有一个特定的称为根的结点;
⑵ 当n>1时,除根结点之外的其余结点被分成m(m>0)个互不相交的有限集合T1,T2,… ,Tm,其中每个集合又是一棵树,并称为这个根结点的子树。
树的定义是采用递归方法
2.二叉树的遍历操作
树的遍历:从根结点出发,按照某种次序访问树中所有结点,使得每个结点被访问一次且仅被访问一次。
2.1前序(根)遍历
若二叉树为空,则空操作返回;否则:
①访问根结点;
②前序遍历根结点的左子树;
③前序遍历根结点的右子树。
2.2中序(根)遍历
若二叉树为空,则空操作返回;否则:
①中序遍历根结点的左子树;
②访问根结点;
③中序遍历根结点的右子树。
2.3后序(根)遍历
若二叉树为空,则空操作返回;否则:
①后序遍历根结点的左子树;
②后序遍历根结点的右子树。
③访问根结点;
2.4层序遍历
二叉树的层次遍历是指从二叉树的第一层(即根结点)开始,从上至下逐层遍历,在同一层中,则按从左到右的顺序对结点逐个访问。
3.二叉树的定义
二叉树是n(n≥0)个结点的有限集合,该集合或者为空集(称为空二叉树),或者由一个根结点和两棵互不相交的、分别称为根结点的左子树和右子树的二叉树组成。
4.二叉树的特点
⑴ 每个结点最多有两棵子树;
⑵ 二叉树是有序的,其次序不能任意颠倒。
5.特殊的二叉树
斜树
1 .所有结点都只有左子树的二叉树称为左斜树;
2 .所有结点都只有右子树的二叉树称为右斜树;
3.左斜树和右斜树统称为斜树。
4.1斜树
1. 在斜树中,每一层只有一个结点;
2.斜树的结点个数与其深度相同。
6.二叉树的双亲
二叉树每一个节点最多出度为2,即它的左孩子和右孩子。和链表的next类似,二叉树的节点间关系依靠双亲
root->left(左孩子)和root->right(右孩子)来表示。二叉树的递归也经常是访问完当前节点之后root->left访问root
的左孩子,通过root->right访问右孩子,进而完成对整个树所有节点的访问。
7.二叉树的深度
从根节点到叶子结点的距离称为深度,最大深度为根节点到叶子节点的最大距离,最小距离为根节点到叶子节点的最小距离。
8.二叉树的等价
两颗二叉树等价只有当结构与节点值完全相同时才为等价,即两个根节点的值相同并且左子树等价左子树,右子树等价右子树这两颗树才等价。
9.二叉树的递归
二叉树的大多数节点都连接着左右两个子树(有些节点没有两个子树),每一个子树都有一个根节点。在访问完当前根节点后以当前根节点的孩子
为新的根节点访问,进而把一棵树按照一个个向下移的根节点拆分为更小的子树,对最小的子树进行的操作递归后即为对整棵树的操作。
- LintCode 关于二叉树问题的总结
- lintcode 二叉树总结
- lintcode 二叉树总结
- LintCode 关于排序问题的总结
- LintCode 关于递归问题的总结
- LintCode 关于动态规划问题的总结
- LintCode-二叉树专题总结
- lintcode 二叉查找树总结
- lintcode二叉查找树总结
- LintCode二叉树&递归分治题总结
- lintcode——二叉树总结
- LintCode-二叉查找树专题总结
- lintcode——二叉查找树总结
- LintCode 关于贪心算法的总结
- LintCode 关于回溯算法的总结
- Lintcode 关于分支限界算法的总结
- LintCode-不同的二叉查找树 II
- LintCode-不同的二叉查找树
- Android SDK Manager无法下载包的问题
- Code笔记
- (1)生成Lua解释器和编译器
- 指针的简单操作
- 封装ajax-1
- LintCode 关于二叉树问题的总结
- Android 查看keystore信息
- 二叉树总结
- 剑指offer-面试题11-数值的整数次方
- zoj 3635 Cinema in Akiba 二分+树状数组
- 设置spring-boot的logging
- 【Oracle】数据库错误的总结
- 事件操作的简单要点汇总
- ASP.NET Spring.Net 入门2 简单入门示例--属性与构造函数注入