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;
    }
原文地址:https://www.cnblogs.com/tonyluis/p/4579186.html