美文网首页
剑指 Offer II 056. 二叉搜索树中两个节点之和

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

作者: 邦_ | 来源:发表于2022-07-05 09:27 被阅读0次

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

    相关文章

      网友评论

          本文标题:剑指 Offer II 056. 二叉搜索树中两个节点之和

          本文链接:https://www.haomeiwen.com/subject/tgqtyrtx.html