From 876bebf3cfa4c2d1e958eba6c8ef6bc5d4f72fdd Mon Sep 17 00:00:00 2001 From: CyC2018 Date: Fri, 30 Oct 2026 20:18:02 +0800 Subject: [PATCH] =?UTF-8?q?Update=2033.=20=E4=BA=8C=E5=8F=89=E6=90=9C?= =?UTF-8?q?=E7=B4=A2=E6=A0=91=E7=9A=84=E5=90=8E=E5=BA=8F=E9=81=8D=E5=8E=86?= =?UTF-8?q?=E5=BA=8F=E5=88=97.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 补充二叉搜索树后序遍历序列的左右子树划分思路、校验示例及最坏时间复杂度说明。 --- notes/33. 二叉搜索树的后序遍历序列.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/notes/33. 二叉搜索树的后序遍历序列.md b/notes/33. 二叉搜索树的后序遍历序列.md index 08a923a7..f73df68b 100644 --- a/notes/33. 二叉搜索树的后序遍历序列.md +++ b/notes/33. 二叉搜索树的后序遍历序列.md @@ -12,6 +12,10 @@ ## 解题思路 +后序遍历的最后一个元素是根。从左往右找到第一个大于根的位置 cutIndex,它前面是左子树,从它开始到根之前是右子树。左子树的元素都小于根是这样划分出来就满足的,只需检查右子树中有没有小于根的元素,有就不是二叉搜索树;否则对左右两段递归检查。 + +例如 1,6,3,2,5 的根为 5,cutIndex 指向 6,右子树 6,3,2 中的 3 和 2 小于 5,返回 false。树退化成链时每层只少一个元素,最坏时间复杂度为 O(N2)。 + ```java public boolean verifyTreeOrder(int[] postorder) { if (postorder == null || postorder.length == 0)