1、树
树的遍历分为前序遍历、后序遍历和层次遍历。
● 前序遍历:在任意子树中,遍历顺序为父节点、左孩子结点、右孩子结点。上图前序遍历顺序为:1 2 5 6 7 3 4 8 9 10 。
● 后序遍历:在任意子树中,遍历顺序为左孩子结点、右孩子结点、父节点。上图后序遍历顺序为:5 6 7 2 3 9 10 8 4 1 。
● 层次遍历:从上到下为树分层,第一层可为0层也可为1层,然后逐层遍历。上图层次遍历顺序为:1 2 3 4 5 6 7 8 9 10 。
2、二叉树
值得注意的是,二叉树不是特殊的树,它是一种独立的数据结构。
● 满二叉树:任意树内部节点的度都为2;
● 完全二叉树:二叉树的n-1层都为满二叉树,并且第n层的节点是从左向右依次排列的;
● 非完全二叉树:不满足完全二叉树的二叉树。
二叉树的重要特性:
● 二叉树第i层上的结点数目最多为2i-1(上标)(i≥1);
● 深度为k的二叉树至多有2k-1(上标)个结点(k≥1);
● 在任意-棵二叉树中,若终端结点的个数为n0,度为2的结点数为n2,则no=n2+1;
还有:
3、二叉树的遍历
二叉树的遍历相对于树的遍历多了一个中序遍历,即按照左子节点、父节点、右子节点的顺序遍历,例如对如下的二叉树有:
前序遍历:1 2 4 5 7 8 3 6 ;
中序遍历:4 2 7 8 5 1 3 6 ;
后序遍历:4 8 7 5 2 6 3 1 ;
层次遍历:1 2 3 4 5 6 7 8 。
4、树与二叉树的转换
● 转换标准:树的子节点全部作为二叉树的左节点,树的兄弟节点作为二叉树的右节点。
● 简便方法:树的节点与子节点连线中只保留最左边的一条,然后横向相连,其中黑色斜线作为左子树的边,蓝色横线作为右子树的边,如图2。
● 归纳总结:转换之后,树的前序遍历和二叉树的前序遍历相同;树的后序遍历等于二叉树的中序遍历。