二叉搜索树的后序变量序列
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);
以上是关于二叉搜索树的后序变量序列的主要内容,如果未能解决你的问题,请参考以下文章