判断整数序列是不是二叉查找树(BST)的后序遍历结果
来源:互联网 发布:手机看视频免广告 知乎 编辑:程序博客网 时间:2024/06/02 18:57
里沿用传统二叉查找树(BST)的概念:所有左子树都小于根,右子树都大于根。(不止是直接孩子,还有间接孩子!)
现在给出一个整数序列,要求判断它是否是一棵二叉查找树BST的后序遍历结果。
如果去掉BST这个条件,我们一般是不能只根据后序遍历结果来确定某一棵树的。
有了BST这个条件后,我们可以这么做:
定义如下递归函数头:
(1)另root = end-1,则arr[root]为从start开始,end结束的子树的根(后序遍历么!)
(2)我们另i从start开始,一直++,直到碰到第一个arr[i]大于arr[root]的,那么此时的i已经位于右子树了。从start~i-1是左子树。
(3)显然从i~end-2是右子树,我们检查这段arr[j],如果有发现<arr[root]的,直接返回false。(右子树必须都大于根!)
(4)递归检查左子树 judge(arr, start, i-1) 和右子树 judge(arr, i, end-2)。如果某一个judge返回0,那么返回0,两个都1返回1。
(5)如果start==end时候,或者arr==NULL时(空树也是BST的一种!),可以直接返回
定义:二叉排序树(Binary Sort Tree)又称二叉查找树。 它或者是一棵空树;或者是具有下列性质的二叉树: (1)若左子树不空,则左子树上所有结点的值均小于它的根结点的值; (2)若右子树不空,则右子树上所有结点的值均大于它的根结点的值; (3)左、右子树也分别为二叉排序树。
/** * Created by renshuang on 10/11/13. */public class BinarySortTree { public static void main(String args[]){ int[] a = {5,7,6,9,11,10,8}; System.out.println(verfyBst(a,0,a.length)); int[] b = {7,4,6,5}; System.out.println(verfyBst(b,0,b.length)); } public static boolean verfyBst(int[] data,int start,int end){ if (data == null || start > end) { return false; } if (start == end) { return true; } int root = data[end - 1]; int i = start; for (; i < end - 1; i++) { if (data[i] >= root) { break; } } int j = i; for (; j < end - 1; j++) { if (data[j] < root) { return false; } } return verfyBst(data, start, i) && verfyBst(data, i, end - 1); }}
- 判断整数序列是不是二叉查找树(BST)的后序遍历结果
- 判断整数序列是不是二叉查找树(BST)的后序遍历结果
- 判断整数序列是不是某二叉查找树的后序遍历的结果
- 判断整数序列是不是二叉查找树的后序遍历结果
- 判断整数序列是不是二叉查找树的后序遍历结果
- 二叉树系列7:判断整数序列是不是二叉搜索树的后序遍历结果
- 整数序列是不是二叉查找树的后序遍历结果
- 9.判断整数序列是不是二元查找树的后序遍历结果(树)
- 判断整数序列是不是二元查找树的后序遍历结果
- 判断整数序列是不是二元查找树的后序遍历结果
- 判断整数序列是不是二元查找树的后序遍历结果
- 算法讨论(五)--判断整数序列是不是二元查找树的后序遍历结果
- 算法题11 判断整数序列是不是二元查找树的后序遍历结果
- 判断整数序列是不是二元查找树的后序遍历结果
- 9.判断整数序列是不是二元查找树的后序遍历结果
- MS100(9)-判断整数序列是不是二元查找树的后序遍历结果
- 判断整数序列是不是二元查找树的后序遍历结果
- 9、判断整数序列是不是二元查找树的后序遍历结果
- zxing文档版
- cocos2d-x v3.0代码差异
- Android NDK开发(2)----- JNI多线程
- 《Single Image Haze Removal Using Dark Channel Prior》一文中图像去雾算法的原理、实现、效果及其他。
- 我的博客
- 判断整数序列是不是二叉查找树(BST)的后序遍历结果
- jquery实现input输入框实时输入触发事件
- IOS7隐藏状态栏
- The connection to adb is down, and a severe error has occured.
- HTTP状态码大全
- 我的日志记录函数
- 关于try,finally执行顺序的分析
- Windows环境中同时安装Oracle9i 10g和11g
- php查询mysql表中所有字段详细信息