1、基本概念:二叉树是一颗树,每个节点最多有两个孩子节点,一左一右,左边的成为做孩子,右边的称为右孩子。
2、排序二叉树:没有重复元素,而且有序。对每个节点而言:如果左子树不为空,则左子树上的所有节点都小于该节点;
如果右子树不为空,则右子树上的所有节点都大于该节点。
3、查找
1)首先与根节点比较,如果相同,就找到了;
2)如果小于根节点,则到左子树中递归查找;
3)如果大于根节点,则到右子树中递归查找。
- 最小值即为最左边的节点,从跟节点一路查找做孩子即可;最大值即为最右边的节点,从根节点一路查找右孩子即可。
4、遍历
1.访问左子树;
2. 访问当前节点;
3. 访问右子树
从根节点开始,但先访问根节点的左子树,一直到最左边的节点,所以第一个访问的是1,1没有右子树,返回上一层,访问3,然后访问3的右子树,4没有左子树,所以访问4,然后是4的右子树6,以此类推,访问顺序就是有序的:1、3、4、6、7、8、9.
5、插入
1)与当前节点比较,如果相同,表示已经存在了,不能再插入;
2)如果小于当前节点,则到左子树中寻找,如果左子树为空,则当前节点即为要找的父节点;
3)如果大于当前节点,则到右子树中寻找,如果右子树为空,则当前节点即为要找的父节点。
满二叉树是指除了最后一层外,每个节点都有两个孩子,而最后一层都是叶子节点,都没有孩子
完全二叉树要求所有节点必须几种在最左边,从左到右是连续的,中间不能有空的
整理自:《JAVA编程的逻辑》