leetcode中等剑指 Offer 33二叉搜索树的后序遍历序列
Posted qq_40707462
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了leetcode中等剑指 Offer 33二叉搜索树的后序遍历序列相关的知识,希望对你有一定的参考价值。
思路:
1、划分左右子树
遍历后序遍历的 [i, j]
区间元素,寻找 第一个大于根节点 的节点,索引记为 m 。此时,可划分出左子树区间 [i,m-1]
、右子树区间 [m, j - 1]
、根节点索引 j
。
2、递归判断左右是否满足:
左子树区间 [i, m - 1]
内的所有节点都应 < postorder[j]
。而之前划分左右子树,已经保证左子树区间的正确性,因此只需要判断右子树区间即可。
右子树区间 [m, j-1]
内的所有节点都应 >postorder[j]
。实现方式为遍历,当遇到 postorder[j]≤postorder[j]
的节点则跳出;则可通过 p = j
判断是否为二叉搜索树。
class Solution {
public boolean verifyPostorder(int[] postorder) {
return dfs(postorder,0,postorder.length-1);
}
public boolean dfs(int[]postorder,int i,int j){
if(i>=j) return true;
int temp=i;
while(postorder[temp]<postorder[j]) temp++;
int m=temp;//左右分界线
while(postorder[temp]>postorder[j]) temp++;//看右是否满足条件
return j==temp && dfs(postorder,i,m-1) && dfs(postorder,m,j-1);
}
}
以上是关于leetcode中等剑指 Offer 33二叉搜索树的后序遍历序列的主要内容,如果未能解决你的问题,请参考以下文章
leetcode中等剑指 Offer 33二叉搜索树的后序遍历序列
LeetCode(剑指 Offer)- 33. 二叉搜索树的后序遍历序列
[LeetCode]剑指 Offer 33. 二叉搜索树的后序遍历序列
[LeetCode]剑指 Offer 33. 二叉搜索树的后序遍历序列