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

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

Ideas

算法:递归
数据结构:二叉搜索树

根据二叉搜索树的性质使用中序遍历将所有节点的值保存到一个数组
遍历完成之后会得到一个有序的数组
从而将问题转换成两数之和的问题

Code

# Definition for a binary tree node.
# class TreeNode:
#     def __init__(self, val=0, left=None, right=None):
#         self.val = val
#         self.left = left
#         self.right = right
class Solution:
    def findTarget(self, root: TreeNode, k: int) -> bool:
        self.nums = []
        def in_order(node):
            if not node:
                return
            in_order(node.left)
            self.nums.append(node.val)
            in_order(node.right)
        in_order(root)
        L, R = 0, len(self.nums) - 1
        while L < R:
            if self.nums[L] + self.nums[R] > k: R -= 1
            elif self.nums[L] + self.nums[R] < k: L += 1
            else: return True
        return False
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值