1、什么是二叉树
定义:有且仅有一个根节点,每个节点只有一个父节点,最多含有两个子节点,子节点有左右之分。
2、二叉树的遍历
二叉树是一种树形结构,遍历就是要让树中的节点被且仅被访问一次,即按一定规律排列成一个线性队列。二叉树是一种递归定义的结构,包含三个部分:根节点(N)、左子树(L)、右子树(R)。根据这三个部分的访问次序对二叉树的遍历进行分类,总共有6种遍历方案:NLR、NRL 、LNR、 LRN 、RLN 、RNL 。研究二叉树的遍历就是研究这6种具体的遍历方案,显然根据简单的对称性,左子树和右子树的遍历可互换,即NLR和NRL、LNR和RNL、LRN和RLN。分别称为“先序遍历”(根左右)、“中序遍历”(左根右)和“后序遍历”(左右根)。
先序遍历(根左右):
- 从A点看起,根节点为A,记录A,左节点为B,记录B,B没有左节点,右节点为C,根据根左右原则,记录C,把C当做根节点,左子树为D,记录D,此时根节点A的左子树部分记录完成。
- 此时返回节点A,右子树为E,根据根左右原则,记录E,把E看做根节点,E没有左子树,记录E,右子树为F,把F看做根节点,记录F,左子树为G,没有右子树,把G看做根节点,记录G,G的左子树为H,记录H,右子树为K,记录K
- 因此顺序为:ABCDEFGHK
中序遍历(左根右):
- 从根节点A开始,左子树为B,此时把B 看做根节点,B没有左子树,返回B ,记录B,B有右子树C,把C看做根节点,C的左子树为D,记录D,返回C,记录C,C没有右子树,因此返回A,记录A,
- 根节点A有右子树E,此时把E看做根节点,E没有左子树,返回E,记录E,E的右子树为F,把F看做根节点,F的左子树为G,G有子节点,把G看做根节点,G的左子树为H,记录H,返回G,记录G,G的右子树为K,记录K,返回G,由G返回F,记录F
- 中序遍历顺序为:BDCAEHGKF
后序遍历(左右根):
- 从根节点A开始,A的左子树为B,根据左右根原则,把B看做根节点,B没有左子树,B有右子树C,C有左子树D,记录D,C没有右子树,此时返回C,记录C,由C返回B,记录B,此时返回了根节点A,A有右子树E
- 此时把E看做根节点,E没有左子树,E的右子树为F,把F看做根节点,F的左子树为G,把G看做根节点,G 有左子树H,根据左右根原则,记录H,G有右子树K,记录K,由K返回G,记录G,由G返回F,F没有右子树,记录F,由F返回E,E没有左子树,因此记录E,由E返回A,记录A
- 后序遍历顺序为:DCBHKGFEA