搜索树的含义是整个树按照中序遍历 然后遍历的结果是按升序排列的。
首先想到的是进行非递归的中序遍历,然后再原来输出的位置,进行判断与前一个节点的关系。这样进行了两个节点之间的判断。
代码如下:
ublic static boolean isSearchTree(TreeNodes node){
//中序遍历 进行判断
if(node==null) return true;
int pre_Num = Integer.MIN_VALUE;
Stack<TreeNodes> sta =new Stack();
while(node!=null||!sta.isEmpty()){
if(node!=null){
sta.push(node);
node =node.left;
}else{
node =sta.pop();
if(node.index<pre_Num){
return false;
}
pre_Num=node.index;
node =node.right;
}
}
return true;
}
使用递归方法,递归方法进行分析相对与非递归实较麻烦 。
第一种方法: 递归遍历,将所有数据都压入栈中,然后再取出进行比较 。此方法时间空间复杂度都很高,
第二种方法: 列出所有可能性,