给定一个二叉树,判断其是否是一个有效的二叉搜索树。
假设一个二叉搜索树具有如下特征:
- 节点的左子树只包含小于当前节点的数。
- 节点的右子树只包含大于当前节点的数。
-
所有左子树和右子树自身必须也是二叉搜索树。
示例 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)
}
网友评论