leetCode练习(98)

来源:互联网 发布:苹果手机数据找回 编辑:程序博客网 时间:2024/06/05 18:25

题目:Validate Binary Search Tree

难度:medium

问题描述:

Given a binary tree, determine if it is a valid binary search tree (BST).

Assume a BST is defined as follows:

  • The left subtree of a node contains only nodes with keys less than the node's key.
  • The right subtree of a node contains only nodes with keys greater than the node's key.
  • Both the left and right subtrees must also be binary search trees.

Example 1:

    2   / \  1   3
Binary tree [2,1,3], return true.

Example 2:

    1   / \  2   3
Binary tree [1,2,3], return false.

解题思路:

检验一棵树是不是二叉搜索树。中序遍历整棵树,检验输出元素是不是有序的即可。

具体代码如下:

/** * Definition for a binary tree node. * public class TreeNode { *     int val; *     TreeNode left; *     TreeNode right; *     TreeNode(int x) { val = x; } * } */public class Solution {    public boolean isValidBST(TreeNode root) {        if(root==null||root.left==null&&root.right==null){return true;}ArrayList<Integer> list=new ArrayList<Integer>();zhongxubianli(root,list);int temp=0,w=0;Iterator<Integer> iter=list.iterator();if(iter.hasNext()){temp=iter.next();}while(iter.hasNext()){w=iter.next();if(w<=temp){return false;}temp=w;}return true;    }    public void zhongxubianli(TreeNode root,ArrayList<Integer> list){if(root.left!=null){zhongxubianli(root.left,list);}list.add(root.val);if(root.right!=null){zhongxubianli(root.right,list);}}}

0 0
原创粉丝点击