Leetcode 98.Validate Binary Search Tree

来源:互联网 发布:mac os sierra u盘 编辑:程序博客网 时间:2024/06/05 06:29

@author stormma
@date 2017/11/28


生命不息,奋斗不止!


题目

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.

解决方案

递归判断结点的值是否在一个范围内就行了。左子树的值在(null, root.val)范围内(null表示无穷大/小)。右子树的值在(root.val, null)的范围内。

代码实现

static class Solution2 {        public boolean isValidBST(Question100.TreeNode root) {            return dfs(root, null, null);        }        private boolean dfs(Question100.TreeNode node, Integer min, Integer max) {            if (node == null) {                return true;            }            if ((min != null && node.val <= min) || (max != null &&node.val >= max)) {                return false;            }            return dfs(node.left, min, node.val) && dfs(node.right, node.val, max);        }    }

另外还有一种方法,可以采用中序遍历的方式来判断结果是否有序来推出是不是一个BST。

原创粉丝点击