标签:java solution ali 搜索 sys 通过 大于 改进 包含
[TOC]
初刷leetcode心得,根据题目、定义思考解题方案,第一遍先做出可以运行的答案,第二遍再适当进行速度优化,第三遍看看最优的答案理解其思路。
给定一个二叉树,判断其是否是一个有效的二叉搜索树。
二叉搜索树的定义如下:
根据二叉排序树的中序遍历性质,可知其中序遍历为递增有序序列,所以可以将遍历结果存在ArrayList中,再对ArrayList进行有序的判断,若无序则返回false。
················
/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode(int x) { val = x; }
* }
*/
class Solution {
private ArrayList treeList = new ArrayList();
public boolean isValidBST(TreeNode root) {
toList(root);
boolean flag = true;
/* for (int i = 0; i < treeList.size(); i++) {
System.out.println(treeList.get(i));
}*/
//通过两个for循环进行有序性的判断
for(int i=0;i<treeList.size();i++)
for(int j=i+1;j<treeList.size();j++)
if((int)treeList.get(i) >= (int)treeList.get(j))
flag = false;
return flag;
}
//中序遍历存入treeList
public void toList(TreeNode root){
if(root!=null){
toList(root.left);
treeList.add(root.val);
toList(root.right);
}
}
}
最终时间性能不尽人意,在双重for循环处耗时O(n2),可以考虑改进的判断有序算法。
·········
··········
/**
* 这是一段注释块
*
* 标记部分(block tags)
*/
·········
·········
标签:java solution ali 搜索 sys 通过 大于 改进 包含
原文地址:https://www.cnblogs.com/crazy123snail/p/9194974.html