剑指 Offer II 056. 二叉搜索树中两个节点之和

因为是二叉搜索树 所以中序遍历之后是个递增数组。。 然后用双指针
如果和小于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)
        
    }






©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容