因为是二叉搜索树 所以中序遍历之后是个递增数组。。 然后用双指针
如果和小于k的话左指针往右移动 大于k的话 右指针往左移动
func findTarget(_ root: TreeNode?, _ k: Int) -> Bool {
var array = Array<Int>()
dealTree(root, &array)
var left = 0
var right = array.count - 1
while left < right {
let sum = array[left] + array[right]
if sum == k {
return true
}else if sum < k {
left += 1
}else {
right -= 1
}
}
return false
}
func dealTree(_ root:TreeNode? ,_ array:inout Array<Int>) {
if root == nil {
return
}
dealTree(root?.left,&array)
array.append((root?.val)!)
dealTree(root?.right,&array)
}
网友评论