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; }