首页 > 编程语言 > 详细

剑指Offer(Java版)第二十八题:输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。 如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。

时间:2020-03-17 13:05:32      阅读:124      评论:0      收藏:0      [点我收藏+]

/*
输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。
如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。
*/
//思路:
//二叉树后序遍历数组的最后一个数为根结点,剩余数字中,
//小于根结点的数字(即左子树部分)都排在前面,大于根结点的数字(即右子树部分)都排在后面。
//根据遍历数组的这个特性,可以编写出一个递归函数,用于实现题目所要求的判断功能。
public class Class28 {

public boolean yanZhengHouXu(int[] data){
if((data == null) || (data.length <= 0)){
return false;
}
return yanZhengHouXuMain(data, 0, data.length - 1);
}

public boolean yanZhengHouXuMain(int[] data, int start, int end){
if(start >= end){
return true;
}
int i = start;
//二叉树左子树节点小于根节点
while(data[i] < data[end]){
i++;
}
int j = i;
//二叉树右子树节点大于根节点
while(j < end){
{
if(data[j] < data[end]){
return false;
}
j++;
}
}
boolean left = yanZhengHouXuMain(data, start, i - 1);
boolean right = yanZhengHouXuMain(data, i, end-1);

return left && right;
}

public static void main(String[] args) {
// TODO Auto-generated method stub

}

}

剑指Offer(Java版)第二十八题:输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。 如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。

原文:https://www.cnblogs.com/zhuozige/p/12509828.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!