课时55 数的概念
树,二维空间的集合。 其中每个节点都会有零个或多个子节点。
节点的度,一个节点有几个下级。
树的度,一个节点最大的度就是这个树的度。
父节点:一个结点的上级就是该节点的父节点。
树的深度:层次最深的一条枝。
节点的祖先:一个节点的的上级沿着那一条路径到最上面的顶点的,都是祖先。
完全二叉树:除了根节点那一层外,其余层的节点都达到了最大值。
满二叉树:所有层的节点都达到最大值。
排序二叉树:指的是树当中的节点,遍历时会发现其是有序的。
对于根部的节点8,左边的3比8小,右边的10比8大。
对于节点3来说,3左边的节点一定比它小,而右边的节点一定比它大。
对于10来说,右边的节点一定比它大。
这样一个树符合二分查找法。
每一层从左到右按照顺序储存。
课时56二叉树的概念
对于根节点来说,左边的叫做“左子树”,右边的叫做“右子树”。
课时57 二叉树的广度优先遍历
首先,也要建立一个节点的类。
同时与链表不同,二叉树的一个节点要有两个链接。
接着构造一个树,保存一个根节点。
现在开始构造参数,添加节点。
对于二叉树来说,不考虑头插,只考虑在最后去添加。
但是完全二叉树,必须把每一层填满了,才能进行下一层,所以找到添加节点的位置时,
也需要一层一层去找。
以上图为例,需要在E的右边添加节点。
总之,为了添加节点,就需要广度遍历(层次遍历)。广度是指横向。
首先先看A,
判断A是否左右两边子节点都存在。
接着判断B,左右两边存在; 所以在后面去补充DE。
然后再看C,由于C也有两个子节点,所以在后面去补充。
简单来说就是,始终在右边部分去补充,在左边去读取。与队列一样。