当前位置: 代码迷 >> 综合 >> 剑指offer第二十三题二叉搜索树的后序遍历
  详细解决方案

剑指offer第二十三题二叉搜索树的后序遍历

热度:47   发布时间:2024-02-05 02:38:26.0

放在前面:

写了两天论文,最后写论文了!!!再不学编程我这辈子就毁了!!!

题目描述

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

package test;
class TreeNode {int val;TreeNode left = null;TreeNode right = null;public TreeNode(int val) {this.val = val;}
}
class Solution {public boolean helpVerify(int [] sequence, int start, int root){if(start >= root)return true;int i;//找到左右子树的分界点for(i=start; i < root; i++)if(sequence[i] > sequence[root])break;//在右子树中判断是否含有小于root的值,如果有返回falsefor(int j = i; j < root; j++)if(sequence[j] < sequence[root])return false;return helpVerify(sequence, start, i-1) && helpVerify(sequence, i, root-1);}public boolean VerifySquenceOfBST(int [] sequence) {if(sequence == null || sequence.length == 0)return false;return  helpVerify(sequence, 0, sequence.length-1);}
}
public class Main {public static void main(String[] args) {TreeNode head=new TreeNode(1);//849TreeNode second=new TreeNode(2);//850TreeNode three=new TreeNode(3);//851TreeNode four=new TreeNode(4);//852TreeNode five=new TreeNode(5);//853TreeNode six=new TreeNode(6);//854TreeNode seven=new TreeNode(7);//855head.right=three;head.left=second;second.right=five;second.left=four;three.right=seven;three.left=six;
//        int []a = {7,6,3,5,4,2,1};int []a = {2,3,4,7,8,6,5};Solution solution = new Solution();boolean yesorno = solution.VerifySquenceOfBST(a);System.out.print("存不存在?"+yesorno);//进去再弹出来}
}

 

  相关解决方案