1.1 树、树的遍历(LC:144 + 94 + 145)
根节点:每棵树只有一个根节点,如节点a
叶子节点:没有孩子的节点,如节点g、e、f
关于树的高度、深度、层:
树的分类:
- 一般树:任意一个节点的子节点的个数都不受限制
- 二叉树:二叉树是一个有序树(如一个父节点有两个子节点,A是左子节点,B是右子节点,结构顺序是A左B右,不能改变顺序,即节点是有序的)
- 关系:满二叉树是完全二叉树的特例,完全二叉树包含了满二叉树
- 完全二叉树:如果只是删除了满二叉树最底层最右边的连续若干个节点,这样形成的二叉树就是完全二叉树
- 满二叉树:在不增加树的层数的前提下,无法再多添加一个节点的二叉树就是满二叉树(每一层的节点数都是最大的)
- 一般二叉树:任意一个节点的子节点个数最多两个,且子节点的位置不可更改
- 二叉树的优点:
- 当得知一个树的节点个数,就会知道该树一共有几层
- 已知完全二叉树中的任何一个节点,就可以查找该节点的父节点和子节点(也包括判断该节点有没有子节点)(采用连续的数组方式存储树的节点)
- 二叉树的特点:
- 一个有n个节点的二叉树,层数是m层,第m层最多有n/2个节点,第m-1层最多有(n/2)/2 = n/4个节点...
对二叉树的遍历操作(结合了递归的思想):
按照下面三种遍历方式,都可以将一个非线性的树转化成一个线性序列,进而存储在计算机的线性物理内存结构(如数组)中