博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
剑指offer系列之二十二:二叉搜索树的后续遍历序列
阅读量:6237 次
发布时间:2019-06-22

本文共 1557 字,大约阅读时间需要 5 分钟。

题目描述

输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。

此题仍然是对二叉树遍历方法的考察,但是与直接对遍历方法的考察不太一样,因为这里的输入是后续遍历的序列,所以要判断该序列是否是某二叉树的后续遍历结果,关键在于找出根节点,根节点的左子树和根节点的右子树,然后继续对左子树和右子树进行判断,直到全部元素访问完毕。这里很显然是一个递归的过程。由于后续遍历是先访问双亲节点,接着访问左孩子,再访问右孩子,所以需要对每个节点的左右子树做进一步的判断。

明白思路后,可以写出如下的实现代码(已被牛客AC):

package com.rhwayfun.offer;public class VerifySequenceOfBiST {
public boolean VerifySquenceOfBST(int[] sequence) { if(sequence.length <= 0) return false; int rootVal = sequence[sequence.length - 1]; int i = 0; for(; i < sequence.length - 1; i++){ if(sequence[i] > rootVal) break; } //拷贝左子树到一个新的数组 int[] leftTree = new int[i]; System.arraycopy(sequence, 0, leftTree, 0, i); int j = i; for(; j < sequence.length - 1; j++){ if(sequence[j] < rootVal) return false; } //拷贝右子树到一个新数组 int[] rightTree = new int[sequence.length - i - 1]; System.arraycopy(sequence, i, rightTree, 0, sequence.length - i - 1); boolean verifyLeft = true; if(i > 0){ verifyLeft = VerifySquenceOfBST(leftTree); } boolean verifyRight = true; if(i < sequence.length - 1){ verifyRight = VerifySquenceOfBST(rightTree); } return verifyLeft && verifyRight; } public static void main(String[] args) {// int[] sequence = new int[]{5,7,6,9,11,10,8}; int[] sequence = new int[]{
7,4,6,5}; System.out.println(new VerifySequenceOfBiST().VerifySquenceOfBST(sequence)); }}

转载地址:http://wgkia.baihongyu.com/

你可能感兴趣的文章
如何获取好链接??(下)
查看>>
Javascript与Ajax
查看>>
X11转发图形界面的问题处理方式
查看>>
Django 过滤器
查看>>
linux 中建立HTTPS访问
查看>>
Environment variable ORACLE_UNQNAME not defined
查看>>
Exchange各版本号收集
查看>>
NAS与SAN存储
查看>>
【Case分享】Exchange 2013EMS命令无法加载
查看>>
nrm切换npm源利器
查看>>
[C编程在Linux上]用 printf做彩色日志记录
查看>>
O365结合ADFS限制用户登录地址 (二) - 安装AAD Connect
查看>>
Lync 2013 配合 Sonus SBC 1000/2000 配置呼叫转接和同时拨打
查看>>
工作流引擎Synchro Flow的流程度量
查看>>
asp.net 使用ffmpeg.exe获取视频信息并截图方法类
查看>>
Go36-31-sync.WaitGroup和sync.Once
查看>>
input设置为disabled提交后获取不到该值的解决方法
查看>>
我的友情链接
查看>>
利用wget 和队列 模拟网络爬虫 (不带判重程序)
查看>>
从零开始学习Gradle之三---多项目构建
查看>>