LintCode 关于二叉树问题的总结

来源:互联网 发布:vb automation 错误 编辑:程序博客网 时间:2024/06/05 11:24

1.树的定义

树:n(n≥0)个结点的有限集合。当n0时,称为空树;任意一棵非空树满足以下条件:

⑴ 有且仅有一个特定的称为根的结点;

⑵ 当n>1时,除根结点之外的其余结点被分成mm>0)个互不相交的有限集合T1,T2, ,Tm其中每个集合又是一棵树,并称为这个根结点的子树

树的定义是采用递归方法

2.二叉树的遍历操作

树的遍历:结点出发,按照某种序访问树中所有结点,使得每个结点被访问一次且仅被访问一次。

2.1前序(根)遍历

若二叉树为空,则空操作返回;否则:

①访问根结点;

前序遍历结点的左子树;

前序遍历结点的右子树。

2.2中序(根)遍历

若二叉树为空,则空操作返回;否则:

中序遍历结点的左子树;

②访问根结点;

③中序遍历结点的右子树。

2.3后序(根)遍历

若二叉树为空,则空操作返回;否则:

后序遍历结点的左子树;

后序遍历结点的右子树。

③访问根结点;

2.4层序遍历

二叉树的层次遍历是指从二叉树的第一层(即根结点)开始,从上至下逐层遍历,在同一层中,则按从左到右的顺序对结点逐个访问。

3.二叉树的定义

二叉树是nn≥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.二叉树的递归

二叉树的大多数节点都连接着左右两个子树(有些节点没有两个子树),每一个子树都有一个根节点。在访问完当前根节点后以当前根节点的孩子

为新的根节点访问,进而把一棵树按照一个个向下移的根节点拆分为更小的子树,对最小的子树进行的操作递归后即为对整棵树的操作。



0 0