二叉搜索树的后序遍历序列

Posted zhou753099943

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了二叉搜索树的后序遍历序列相关的知识,希望对你有一定的参考价值。

题目:

输入一个整数数组,判断该数组是不是一颗二叉搜索树的后续遍历的结果,如果是返回true,否则返回false

分析:由于二叉搜索树的特性,左子树一定小于根节点,右子树一定大于根节点,所以在一颗二叉搜索树中不会出现两个相同的节点


bool IsBST(int arr[],int len)

	assert(arr !=NULL);
	if(len < 0)
		return false;
	//首先由于二叉树的特性,所以根节点是最后一个节点
	int root=arr[len-1];
	int i=0;
	while(i <len-1)
	
		//找到第一个比根节点大的节点,从这一分为二
		//小于i的是根节点左子树,大于i的是右子树
		if(arr[i] >root)
			break;
		++i;
	
	int j=i+1;
	while(j <len-1)
	
		//由于二叉搜索树的性质,所以如果找到右子树中有比root小的树
		//那就不是二叉搜索树,返回false
		if(arr[j] <root)
			return false;
	
	//否则就递归的去从左右子树中继续找
	bool leftchild=true;
	//从i下标隔开,小于i的是根节点左子树
	//大于i下标的是右子树
	if(i >0)
		leftchild=IsBST(arr,i);
	//递归右子树
	bool rightchild=true;
	if(i < len-1)
		rightchild=IsBST(arr,len-i-1);

	//最后返回左右子树相 && 的结果
	return (leftchild && rightchild);


以上是关于二叉搜索树的后序遍历序列的主要内容,如果未能解决你的问题,请参考以下文章

二叉搜索树的后序遍历

33. 二叉搜索树的后序遍历序列

11 二叉搜索树的后序遍历序列

二叉搜索树的后序遍历序列

二叉搜索树的后序遍历序列 --剑指offer

剑指offer-二叉搜索树的后序遍历序列