能否利用二叉树的前序遍历与后序遍历结果重建二叉树?
仅通过前序遍历与后序遍历能否重建二叉树?
不一定能唯一重建二叉树,只有在特定条件下才能确定唯一结构,大部分普通场景下无法通过这两种遍历结果还原出唯一的二叉树结构。
核心原因
前序遍历的顺序是根 -> 左子树 -> 右子树,后序遍历是左子树 -> 右子树 -> 根。两者仅能确定根节点的位置,但无法明确划分左、右子树的边界——当某个节点只有单侧子树时,无法判断这个子树是左还是右。
举例说明
比如前序遍历序列为 [1,2],后序遍历序列为 [2,1],对应的二叉树有两种完全不同的结构:
- 结构1:节点1是根,节点2是它的左子节点
- 结构2:节点1是根,节点2是它的右子节点
这两种结构的前序、后序遍历结果完全一致,但树的形态截然不同。
特殊可重建的场景
当二叉树是满二叉树(每个节点要么没有子节点,要么同时拥有左、右两个子节点)时,前序+后序可以唯一重建。此时前序中根节点后的第一个节点是左子树的根,在后续遍历中找到该节点的位置,就能明确划分出左子树的范围,剩余部分即为右子树,从而递归还原整个树结构。
内容的提问来源于stack exchange,提问作者Linda
相关产品推荐
相关产品推荐

