数据结构可以按照逻辑结构和存储结构来分类。逻辑结构又分为:集合、线性结构,非线性结构。具体来说看就是下图:
从图中可看出树属于非线性结构。提起树,不得不说它的几个概念:
1.结点的度:该结点下子结点的数量;
2.树的度:所有结点的度中,数字最大的度即为树的度;
3.叶子结点:度为0的结点;
4.分支结点:除了叶子结点都为分支结点
5.内部结点:除了分支结点和根结点以外的结点,它既不是顶层也不是底层。
如图所示:
这是一颗度为2的树,如何去遍历二叉树中的结点呢?
树的遍历是树的一种重要的运算。所谓遍历是指对树中所有结点的信息的访问,即依次对树中每个结点访问一次且仅访问一次。树的3种最重要的遍历方式分别称为前序遍历、中序遍历和后序遍历。
前序遍历:它是从根节点开始,遵循:中——左——右的原则,即一个树中先遍历中间的父结点,然后遍历其左结点,接着是其右结点。
例如先遍历根结点1,然后是1下面的左节点2,这时2也是4和5的父节点,就再次遍历4,然后是5。
这样前序遍历就为:1,2,4,5,7,8,3,6
中序遍历:中序遍历遵循的是:左——中——右的原则。即先遍历树中父结点下的左子结点,然后是父结点,其次是右子结点。
如上图所示,1为父结点,首先要遍历2,但是此时2是4和5的父结点,所以应先遍历2的左子结点4,然后是2,接下来是5的时候,5又作为7的左子结点,优先遍历7。
这样中序遍历就是:4,2,7,8,5,1,3,6
后序遍历:后序遍历遵从的原则是左——右——中的原则。先遍历树中的左结点,然后是右结点,其次是父结点。当结点下还有结点的时候继续遍历其下的结点。
例如上图中优先遍历4结点,然后该遍历5的时候发现5下面有结点,根据左-中-右原则,继续7结点和8,然后是5。 这样后序遍历就是:4,8,7,5,2,6,3,1
根据遍历的顺序可以知道,它的前序、中序、后序方位词都是以父节点为提示信息的。前序就是父节点先遍历,中序就是父节点居中遍历,后序就是最后遍历父节点。当某一结点下有子结点的时候,按照遍历的顺序递归遍历该结点。