定义:二叉排序树(Binary Sort Tree)又称二叉查找树。 它或者是一棵空树;或者是具有下列性质的二叉树: (1)若左子树不空,则左子树上所有结点的值均小于它的根结点的值; (2)若右子树不空,则右子树上所有结点的值均大于它的根结点的值; (3)左、右子树也分别为二叉排序树。
/*
* 判断给定序列是否为二叉查找树*/
public class JudgePostOrderSearchTree {
static boolean ifIsPostOrderSerachTree(int[] array,
int start,int end) { //从start到end-1
if(array == null || start > end )
return false;
if(start == end) //序列中只有一个数
return true;
int root = array[end-1];
int i=start;
while( array[i] < root && i<end-1) //找到第一个大于根的数的位置position
i++;
int position = i;
while( i<end-1) {
if(array[i] <root) { //如果在position后还有小于根的数,则不是二叉查找树
return false;
}
i++;
}
//若左右子树有一个不为二叉查找树,则当前序列不满足条件
boolean left = true;
left = ifIsPostOrderSerachTree(array,start,position);
boolean right = true;
right = ifIsPostOrderSerachTree(array,position,end-1);
return (left && right);
}
public static void main(String[] args) {
int[] a = {5,7,6,9,11,10,8};
System.out.println(ifIsPostOrderSerachTree(a,0,a.length));
int[] b = {7,4,6,5};
System.out.println(ifIsPostOrderSerachTree(b,0,b.length));
}
}
算法思想参考了
http://www.cnblogs.com/Jessy/archive/2010/11/03/1868289.html
分享到:
相关推荐
输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。 解法一:递归法 # -*- coding:utf-8 -*- class Solution: def ...
题目81涉及到的是判断一个整数列表是否为某个二叉搜索树的后序遍历结果。后序遍历的特点是先遍历左右子树,最后访问根节点,因此最后一个元素即为根节点。为了验证这个列表是否符合后序遍历的顺序,我们可以按照以下...
9. **判断整数序列是否为二元查找树的后序遍历结果**: 判断给定序列是否符合二叉查找树后序遍历的特点,通常后序遍历的顺序是左子树-右子树-根节点,可以用递归或栈来检查这个顺序。 以上就是这些算法面试题的...
判断整数序列是不是二元查找树的后序遍历结果 **知识点概述:** 本题要求判断给定的整数序列是否为某二元查找树的后序遍历结果。 **解题思路:** 1. **二叉搜索树的性质:**二叉搜索树的后序遍历序列具有一定的...
有时需要判断一个整数序列是否是二叉搜索树的后序遍历结果。这通常需要使用栈来辅助完成。 二叉树的统计信息,如总节点个数、叶子节点个数、深度、第k层的节点个数等,是面试中常见的问题。深度可以通过递归方式...
判断整数序列是不是二元查找树的后序遍历结果 **题目描述**: 给定一个整数序列,判断该序列是否是二元查找树的后序遍历结果。 **解题思路**: - 二元查找树的后序遍历结果的最后一个元素是根节点。 - 二元查找树...
判断整数序列是不是二叉查找树的后序遍历结果 **知识点**:本题考查二叉查找树的后序遍历结果的判定。 **解题思路**: 1. **二叉查找树的性质**:二叉查找树的后序遍历结果中,最后一个元素一定是根节点的值。 2. ...
4. 二叉树遍历:前序、中序和后序遍历是二叉树的基础知识,题目要求根据前序和中序遍历重建二叉树并输出后序遍历,这涉及递归和树结构理解。 5. 数列求和:求解特定序列的和,需要理解数列的概念,知道如何判断奇数...
3. 后序遍历(PostOrderTraverse):遍历左子树 -> 遍历右子树 -> 访问根结点。 `BiTreeEmpty`函数用于判断二叉树是否为空,通过检查根结点是否为空实现。 计算二叉树的高度、总节点数和叶子节点数是常见的操作。...
题目中要求构建二叉排序树,输出中序遍历序列,计算平均查找长度,并判断是否为平衡二叉树。平衡二叉树如AVL树或红黑树,能确保查找效率保持在一个较高的水平。当二叉排序树失去平衡时,需要通过旋转操作恢复平衡。 ...
3. **题目:** 依次读入给定的整数序列{7,16,4,8,20,9,6,18,5},构造一棵二叉搜索树,并计算在等概率情况下该二叉搜索树的平均查找长度ASL。〔要求给出构造过程〕。 - **解析:** 构造过程遵循二叉搜索树的插入规则...
判断整数序列是不是二元查找树的后序遍历结果 - **知识点**: 二叉搜索树的性质、后序遍历的特征。 - **应用场景**: 根据给定的整数序列,判断这个序列是否为某二叉搜索树的后序遍历的结果。 ### 7. 翻转句子中...
##### 1.2.8 判断整数序列是不是二元查找树的后序遍历结果 - **问题描述**:给定一个整数序列,判断它是否为某个二叉搜索树的后序遍历结果。 - **解决方案**: - 后序遍历的特点是左子树、右子树、根节点的顺序,...
判断链表是否为回文链表 leetcode Algorithms Coding_Interviews and Leetcode ...二叉搜索树的后序遍历序列 判断一个数是不是丑数 单链表删除指定数字 容纳最多水的凹槽容量 移除单链表倒数第n个节
- **第9题**:判断数组是否为二元查找树的后序遍历结果,可以利用后序遍历的特点(左子树,右子树,根节点),结合二叉搜索树的性质进行判断。 以上题目不仅涵盖了数据结构的基本操作,还深入到了算法设计和优化,...
24.后序遍历二叉搜索树。25.二叉树中和为某值的路径.26.复杂链表的复制27.二叉搜索树转换为双向链表.28.打印字符串中所有字符的排列29.数组中出现次数超过一半的数字.30.找出最小的K个数31.连续子数组的最大和.32.从...
4. **平衡二叉排序树**:平衡二叉排序树是一种特殊的二叉树,它保持了二叉排序树的性质,同时保证左右子树的高度差不超过1,以达到高效查找的目的。题目要求找出满足平衡条件的二叉排序树。 5. **完全二叉树**:在...
在指定空间中创建对象数组去重时间格式化获取字符串长度邮箱字符串判断颜色字符串转换字符串转为驼峰格式字符串字符统计剑指offer二维数组中的查找替换空格从尾到头打印链表重建二叉树用两个栈实现队列旋转数组的...