Java for LintCode 验证二叉查找树

给定一个二叉树,判断它是否是合法的二叉查找树(BST)

一棵BST定义为:

    节点的左子树中的值要严格小于该节点的值。
    节点的右子树中的值要严格大于该节点的值。
    左右子树也必须是二叉查找树。

解题思路:

递归肯定是做不出来的,我的方法比较土,检验中序遍历是否有序,JAVA实现如下:

	public boolean isValidBST(TreeNode root) {
		List<Integer> list=inorderTraversal(root);
		if(list.size()<=1)
			return true;
		int temp=list.get(0);
		for(int i=1;i<list.size();i++){
			if(temp>=list.get(i))
				return false;
			temp=list.get(i);
		}
		return true;
	}
    public List<Integer> inorderTraversal(TreeNode root) {
        List<Integer> list = new ArrayList<Integer>();
        if(root==null)
            return list;
		if (root.left != null)
			list.addAll(inorderTraversal(root.left));
		list.add(root.val);
		if (root.right != null)
			list.addAll(inorderTraversal(root.right));
		return list;
    }

 

posted @ 2015-06-15 20:52  TonyLuis  阅读(502)  评论(0编辑  收藏  举报