这几天面试老是遇到二叉树遍历问题,之前没怎么吃透,这次尝试好好啃一下,在这记录下这次学习的过程
二叉树的定义
首先我们先来看二叉树的口述定义
二叉树是树的叶子节点的数量不大于2的树
我们就随便再看看树的口述定义
树是 N (N >= 0 )个结点的有限集合,N = 0 时,称为空树,这是一种特殊情况。在任意一棵非空树中
应满足:
1) 有且仅有一个特定的称为根的结点。
2)当 N > 1 时,其余结点可分为 m ( m > 0)个互不相交的有限集合T1 , T2 , T3 , .... Tm ,其中每一个
集合本身又是一棵树,并且称为根结点的子树。
说白了就是类似这样的
二叉树说白了就是一个结点若有子节点,则节点的数量最多为2个
那我们再来复习下满二叉树和完全二叉树
满二叉树就是
一个二叉树,最下面一行的节点没有一个有子节点,其余的每个节点都有二个子节点。
直接看图
完全二叉树就是
一个满二叉树,最后一行,从右向左按顺序去除任意节点后得到的树
就像这样的
满二叉树是完全二叉树的一种特殊的情况
以上是国内对二叉树和完全二叉树的定义,国外的话定义不同
我们来看看国外
第一个的字面翻译过来是满二叉树
第二个的字面完全二叉树
第三个的字面是完美二叉树
在国外定义里面,国内的满二叉树变成了完美二叉树,完全二叉树没有改变
而满二叉树,是一个节点要么有2个叶子节点,要么没有叶子节点
二叉树的遍历
二叉树的遍历主要有以下四种:</