树形结构
(线性结构,只有前和后,是一对一的关系)
树形结构是一对多的关系
有序树 vs 无序树:
有序树:孩子的顺序重要的树
无序树:孩子的顺序不重要的树
二处树:
1、 度最大为2 2、有序树
递归思想+递归方法
二叉树的表示形式:
链式表示:
class Node{
int value;//值域
Node left; //指向自己的左孩子,也可以代表以左孩子为根的左子树
Node right; //同理
}
空树 : Node node =null
一个结点的树:
Node node; Node left=null; Node right=null
学习二叉树重点:
学习二叉树的遍历方式
1)深度优先的遍历
1、前序遍历 2、中序遍历 3、后序遍历
2)广度优先的遍历
层序遍历
深度:前|中|后 序
二叉树看作三部分组成: 1、根 2、左子树 3、右子树 (左子树在右子树的前面)
前序遍历:
根+左子树的前序+右子树的前序
中序遍历:
左子树的前序+根+右子树的前序
后序遍历:
左子树的前序+右子树的前序+根
写递归方法的诀窍:
1、不要过早的做递归展开过程,想清楚自己到底是谁
2、递推公式
3、多考虑终止条件,终止条件往往和形参有关系
写完之后要理解过程,做递归展开理解
(代码中构建二叉树时,哪个结点左右结点为为空,一定要写出来。)