美文网首页
(初级)6.验证二叉搜索树

(初级)6.验证二叉搜索树

作者: one_zheng | 来源:发表于2018-08-05 11:23 被阅读6次

给定一个二叉树,判断其是否是一个有效的二叉搜索树。

假设一个二叉搜索树具有如下特征:

  • 节点的左子树只包含小于当前节点的数。
  • 节点的右子树只包含大于当前节点的数。
  • 所有左子树和右子树自身必须也是二叉搜索树。
    示例 1:


    image.png

    示例 2:


    image.png

//  Definition for a binary tree node.
 type TreeNode struct {
       Val int
     Left *TreeNode
      Right *TreeNode
 }
 
func isValidBST(root *TreeNode) bool {
    list := make([]*int, 0)
    inordertravel2(root, list)
    for i := 0; i < len(list)-1; i++ {
        if *list[i] >= *list[i+1] {
            return false
        }
    }
    return true
}

// inordertravel2 中序遍历
func inordertravel2(root *TreeNode, list []*int) {
    if root == nil {
        return
    }
    inordertravel2(root.Left, list)
    list = append(list, &root.Val)
    inordertravel2(root.Right, list)
}

相关文章

网友评论

      本文标题:(初级)6.验证二叉搜索树

      本文链接:https://www.haomeiwen.com/subject/cmqbvftx.html