剑指 Offer 33. 二叉搜索树的后序遍历序列
题目:
输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历结果。如果是则返回 true
,否则返回 false
。假设输入的数组的任意两个数字都互不相同。
参考以下这颗二叉搜索树:
5 / \ 2 6 / \ 1 3
示例 1:
输入: [1,6,3,2,5] 输出: false
示例 2:
输入: [1,3,2,6,5] 输出: true
提示:
数组长度 <= 1000
代码:
1 //二叉搜索树,根节点小于右子树所有节点,大于左子树所有节点 2 //所以根据这个特性,找到左右子树分界点,左侧都小于根,右侧都大于根 3 class Solution { 4 public boolean verifyPostorder(int[] postorder) { 5 if(postorder.length==0){return true;} 6 return fun(postorder,0,postorder.length-1); 7 } 8 public boolean fun(int[] postorder,int left,int right){ 9 if(left==right){return true;} 10 11 for(int i=left;i<right;i++){ 12 //寻找出现的第一个右子树节点 13 if(postorder[i]>postorder[right]){ 14 //在第一个右子树节点后都是右子树节点,即从i开始都大于根节点 15 for( int t=i+1;t<right;t++){ 16 if(postorder[t]<postorder[right]){return false;} //小于根false; 17 } 18 //全部都是右子树节点 19 if(i==left){return fun(postorder,left,right-1);} 20 //左右子树都有节点 21 return fun(postorder,left,i-1)&&fun(postorder,i,right-1); 22 } 23 } 24 //全部都是左子树节点 25 return fun(postorder,left,right-1); 26 } 27 }
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 字符编码:从基础到乱码解决
· 提示词工程——AI应用必不可少的技术