树:树状结构,是用来描述有分支的结构,有一个或一个以上的节点所组成的有限集合;
1、存在特殊的节点:树根
2、多个节点串联且不形成无出口的循环;
一、树的专有名词:
根节点;
父节点;
子节点;
兄弟节点;
叶子节点;
高度;
深度;
度;
祖先;
边;
二、二叉树简介
使用二叉树的原因:
一般二叉树的存储以链表为主,对于n元树,因为每个节点的分支度不相同,所以为了方便起见,我们必须取n为链接个数的最大固定长度,加入n元树有m个节点,那么此树就共享了 n * m 个链接字段,而实际有用的只占 1/n ,这就造成链接的浪费率高,所以为改进空间浪费的缺点,我们使用二叉树代替树状结构;
特殊二叉树的分类:
满二叉树:底层外,每个节点都有左右节点;
完全二叉树:(左对齐)
歪斜树:没有左节点或右节点;
严格二叉树:非叶子节点,挂满左右节点
三、二叉树存储方式
1、数组:如果越趋近满二叉树,越节省空间,歪斜树是最浪费空间的;
2、链表:增加与删除节点相当容易,缺点很难找到父节点;
四、二叉树遍历
1、前序遍历;根节点 --》左子树 --》有子树
2、中序遍历;左子树 --》根节点 -- 》右子树
3、后续遍历;左子树 --》右子树 --》 根节点
五、二叉运算数