码迷,mamicode.com
首页 > 其他好文 > 详细

leetcode - 两数之和Ⅳ 输入BST(653)

时间:2020-02-28 14:05:02      阅读:62      评论:0      收藏:0      [点我收藏+]

标签:else   解题思路   png   特点   中序   binary   turn   算法   span   

题目描述:给定一个二叉搜索树和一个目标结果,如果 BST 中存在两个元素且它们的和等于给定的目标结果,则返回 true。

技术图片

 

解题思路:根据二叉搜索树的特点,对二叉搜索树进行中序遍历可以得到一个从小到达排列的列表,进而将该问题转换为“两数之和Ⅰ”,用双指针或者哈希表求解

因而这题的关键在于,二叉树中序遍历算法。

# Definition for a binary tree node.
# class TreeNode:
#     def __init__(self, x):
#         self.val = x
#         self.left = None
#         self.right = None

class Solution:
    def findTarget(self, root: TreeNode, k: int) -> bool:
        #先中序遍历 得到一个列表 
        tree_list = []
        def inOrder(root):
            if root == None:
                return None
            inOrder(root.left)
            tree_list.append(root.val)
            inOrder(root.right) 
        inOrder(root)
        #双指针
        i = 0
        j = len(tree_list)-1
        while(i<j):
            if (tree_list[i]+tree_list[j] == k):
                return True
            elif (tree_list[i]+tree_list[j] < k):
                i += 1
            else:
                j -= 1
        return False

 

leetcode - 两数之和Ⅳ 输入BST(653)

标签:else   解题思路   png   特点   中序   binary   turn   算法   span   

原文地址:https://www.cnblogs.com/shawn-young/p/12376655.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!