数据结构6-树

6.1 简介
树形结构是日常生活中广泛应用的非线性结构。应用场景如企业内部组构、家族内族谱、计算机操作系统和数据库系统。
性质:
1)根,是一个特殊的结点(root);
2)其余结点分为n个互斥的集合,每个集合称为子树。
树根/根节点;
父结点;
子结点;
兄弟节点:有共同父结点的;
结点分支度:子结点的个数称为该结点的分支度;
叶子结点:没有子结点的结点,即分支度为0的结点;
非叶子结点:分支度不为0的结点;
层:树的层数;
高度:
深度:
森林:n棵互斥的树组成的集合;
祖先和子孙:该节点以上的为祖先结点,该结点衍生出的为孙子结点。

6.2 二叉树简介
一般的树状结构的存储方式是以链表为主,对于n叉树来说,因为每个结点的分支度不相同,所以需要申请最大的内存空间,极大的浪费了内存。
二叉树是一个由有限结点组成的集合,此集合可以为空集或者由一个树根及左右两棵子树组成。简而言之,二叉树最多只能由两个子结点,结点的分支度小于等于2.

特殊二叉树:
1)满二叉树:二叉树高度为h,树的节点个数为2的h次方-1,称为完全二叉树;
2)歪斜二叉树:完全没有左节点或者右结点的二叉树;
3)严格二叉树:如果二叉树的每个非叶子结点都有非空的左右子树,称为严格二叉树。

6.3 二叉树存储方式
可以采用数组或者链表的形式来存储二叉树,但是大多数情况下采用链表形式来存储,这是因为链表指针来处理更加方便,只需改变指针即可。而且对于结点的增加、删除相当容易,缺点是很难找到父结点。
建立二叉树原则:小于父结点的值放在左子树,大于父结点的值放在右子树。

6.4 二叉树的遍历
遍历二叉树的最简单方法就是遍历树中所有节点各一次,并且在遍历后将树的数据转化为线性关系。
遍历方式:
1)中序遍历:左子树-树根-右子树;
2)前序遍历:树根-左子树-右子树;
3)后序遍历:左子树-右子树-树根。

如果一棵二叉树符合”每一个结点的数据大于左子树且小于右子树“,则这棵树称为二分树。二分树方便用来排序及搜索,排序二叉树或者线索二叉树都是二分树的一种。

你可能感兴趣的:(数据结构,树)