《剑指 Offer》专项突破版 - 面试题 56 : 二叉搜索树中两节点的值之和(详解 C++ 实现的两种方法)

目录

前言

一、利用哈希表

二、应用双指针


 


前言

题目链接:LCR 056. 两数之和 IV - 输入二叉搜索树 - 力扣(LeetCode)

题目

给定一棵二叉搜索树和一个值 k,请判断该二叉搜索树中是否存在值之和等于 k 的两个节点。假设二叉搜索树中节点的值均唯一。例如,在下图所示的二叉搜索树中,存在值之和等于 12 的两个节点(节点 5 和节点 7),但不存在值之和为 22 的两个节点。

《剑指 Offer》专项突破版 - 面试题 56 : 二叉搜索树中两节点的值之和(详解 C++ 实现的两种方法)_第1张图片

分析

解决这个问题自然需要遍历二叉树中的所有节点,因此这是一个关于二叉树遍历的问题。


一、利用哈希表

解决这个问题最直观的思路是利用哈希表保存节点的值。可以采用任意遍历算法遍历输入的二叉搜索树,每遍历到一个节点(节点的值记为 vÿ

你可能感兴趣的:(数据结构,算法,c++,开发语言,数据结构,面试)