前序遍历序列与后序遍历序列相同的二叉树为( )。
拿到这题别急着套公式,先想两个遍历的根结点位置:前序里根永远在第一拍,后序里根永远在最后一拍。除非整棵树只有一拍,否则根的位置死活对不上,直接锁定答案。
很多同学会盯着选项 A 和 D 纠结,觉得只要非叶子结点只有一侧子树,遍历序列就差不多,其实不对。比如非叶子结点只有左子树时,前序是根左、后序是左根,根的位置一个头一个尾,序列肯定不同。只有当树里压根没有其它结点时,左右顺序才无所谓,序列才会重合。
前序遍历口诀是“根左右”,后序遍历口诀是“左右根”。这两个序列最大的区别在于根结点的位置:前序里根永远排在第一个,后序里根永远排在最后一个。
命题人出这题,就是想看你是不是真的理解遍历的本质,而不是死记硬背。它喜欢挖的坑就是让你去构造反例:比如“非叶子结点只有左子树”,你脑子里可能浮现出前序 AB、后序 BA 这种“看起来差不多”的序列,但仔细一比对,根的位置一个头一个尾,序列完全不同。只有当整棵树只有一个结点时,左右子树都不存在,前序和后序都只能输出那个根,序列才可能相同。