美文网首页
(初级)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