Golang:
思路:依旧是中序遍历,如果数组是递增的,那么二叉搜索树是正确的
代码如下:
func isValidBST(root *TreeNode) bool {
arr := inOrderValDFS(root)
for i := 1; i < len(arr); i++ {
if arr[i] <= arr[i-1] {
return false
}
}
return true
}
func inOrderValDFS(root *TreeNode) []int {
var stack []*TreeNode
var res []int
for len(stack) != 0 || root != nil {
for root != nil {
stack = append(stack, root)
root = root.Left
}
if len(stack) != 0 {
root = stack[len(stack)-1]
stack = stack[:len(stack)-1]
res = append(res, root.Val)
root = root.Right
}
}
return res
}
有疑问加站长微信联系(非本文作者)