1. 程式人生 > >Validate Binary Search Tree (GOLANG版)

Validate Binary Search Tree (GOLANG版)

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:

Input: 2 / 1 3 Output: true Example 2:

5

/ 1 4 / 3 6 Output: false Explanation: The input is: [5,1,4,null,null,3,6]. The root node’s value is 5 but its right child’s value is 4.

/**

  • Definition for a binary tree node.

  • type TreeNode struct {

  • Val int
    
  • Left *TreeNode
    
  • Right *TreeNode
    
  • } */ func isValidBST(root *TreeNode) bool {

    INT_MAX := int(^uint(0) >> 1) INT_MIN := ^INT_MAX

    if root == nil { return true }

    return validate(root, INT_MAX, INT_MIN)

}

func validate(root *TreeNode, max, min int) bool { if (root == nil) { return true }

if root.Val <= min {
    return false
}


if root.Val >= max {
    return false
}


return validate(root.Left, root.Val, min) && validate(root.Right, max, root.Val)

}