前序(根 - 左 - 右)
中序(左 - 根 - 右)
后序(左 - 右 - 根)
① 已知前序和中序
例:已知:
前序遍历序列:E F H I G J K
中序遍历序列:H F I E J K G
求后序。
①、前序的第一个为根结点。
前序(根 左 右):E F H I G J K。根结点为E。
②、根据根结点E和中序,判断根结点E的左右子树。
中序(左 根 右):H F I E J K G
③、在前序中找到左右子树。(这里用下划线区分)
前序(根 左 右):E F H I G J K
由于前序的特点“根 - 左 - 右”,下划线的第一个就是子树的根结点。
前序(根 左 右):E F H I G J K
④、根据③判断出的E的左右子树的根结点F、G,判断F、G的左右子树。
中序(左 根 右):H F I E J K G
由于中序的特点“左 - 根 - 右”,H - F - I,F的左是H,右是I;G的左子树是J、K。
根据前序(根 左 右):...G J K,下划线的第一个就是子树的根结点,所以J是G左子树的根结点。
根据中序(左 根 右):...J K G,左 - 根 - 右,(左) - J - K,所以J的右结点是K。
注意:
后序与前序的区别:下划线的第一个 / 最后一个为根结点
判断根结点,用“前序/后序”。“下划线的第一个/最后一个为根结点”
判断左右子树,用“中序”。“左 - 根 - 右”
② 已知后序和中序
基本同理 ①,参见“注意”,这里略。