一、题目内容
二、题解
解法1:
思路
代码
class Solution { public boolean verifyPostorder(int[] postorder) { return recur(postorder,0,postorder.length - 1); } public boolean recur(int[] postorder, int left, int right){ if(left >= right){ return true; } int rightFirst = left; while(postorder[rightFirst] < postorder[right]) { rightFirst++; } int rightFirstCopy = rightFirst; //找到第一个不大于根节点的节点,看是否为根节点 while(postorder[rightFirst] > postorder[right]) { rightFirst++; } boolean verifyCurrent = rightFirst == right; boolean isLeftVerify = recur(postorder,left, rightFirstCopy-1); boolean isRightVerify = recur(postorder,rightFirstCopy,right-1); return verifyCurrent && isLeftVerify && isRightVerify; }}