PHP 通过数组判断数组顺序输出是否是二叉排序树的后序遍历结果
2012-09-30 15:57
513 查看
<?php #通过数组判断该数组顺序输出是否是二叉树后序遍历结果 #@param a 待判断数组 #@param s 待判断开始部分 #@param e 待判断结束部分 function is_bst_post($a, $s, $e) { if ($s == $e) { return true; } #由于是后序遍历,所以根节点必然是最后一个元素 $root = $a[$e]; #找到第一个大于等于根节点的元素 #如果符合bst的数组,从s到i-1,都是左子树元素,i到e-1都是右子树的元素 #此处规定二叉树如果有相同的元素都放在右子树 $i = $s; while ($i < $e && $a[$i] < $root) $i++; #分别判断左右子树是否是bst #如果左子树存在,判断左子树是否是bst if ($i > $s) { #此处不需要判断左子树是否都小于root,因为i左边的元素都已经是小于root了 $result_l = is_bst_post($a, $s, $i - 1); } else if ($i == $s) { #左子树不存在 $result_l = true; } #如果右子树存在,判断右子树是否是bst if ($i < $e) { #查看右子树是否所有节点均大于等于root for ($j = $i; $j < $e; $j++) { if ($a[$j] < $root) { return false; } } $result_r = is_bst_post($a, $i, $e - 1); } else if ($i == $e) { #右子树不存在 $result_r = true; } return ($result_l && $result_r); } $a = array(5, 7, 6, 9, 11, 10, 8); $b = array(7, 4, 6, 5); $t = is_bst_post($a, 0, count($a) - 1); $t2 = is_bst_post($b, 0, count($b) - 1); var_dump($t, $t2); ?>
bool(true) bool(false)
相关文章推荐
- 【2013创新工场电话面试】判断一个数组是否为二叉排序树的后序遍历结果
- (PHP实现剑指offer)在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
- (PHP实现剑指offer)在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
- PHP实现在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
- 1367判断一个数组是否为二叉排序树的后序遍历结果
- 剑指offer-第四章解决面试题思路(判断一个数组是否为二叉搜索树的后序遍历序列)
- php 判断数组是否为空
- PHP 判断数组是否为空的5大方法
- 代码分享:php判断数组是否有序
- 判断一个序列是否是一个二叉查找树的后序遍历结果
- 判断字符串是否可以通过交换相邻字符得到回文字符串,如果可以输出最少交换次数
- 通过递归判断一个整形数组是否按升序排列(java实现)
- 在一个二维数组中,每一行都按照从左到右递增的顺序排列,每一列都按照从上到下递增的顺序排列,请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
- PHP判断多维数组是否为空
- 判断两个等长数组中元素是否一样,如不一样,输出不一样的元素
- Interview----判断整数序列是否是二叉搜索树的后序遍历结果
- Train Problem——判断输出序列是否是输入序列的出栈顺序
- PHP 判断数组是否为空的几种方法
- PHP - Manual手册 - XL. Filesystem 文件系统函数 - is_uploaded_file判断文件是否是通过 HTTP POST 上传的
- 在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。