LeetCode Algorithm 剑指 Offer II 056. 二叉搜索树中两个节点之和
Posted _Alex_007
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode Algorithm 剑指 Offer II 056. 二叉搜索树中两个节点之和相关的知识,希望对你有一定的参考价值。
Ideas
这题有点类似一个组合题,首先是通过二叉树遍历得到一个序列,然后再通过LeetCode Algorithm 1. 两数之和的方法查找是否存在两数之和就OK了。
二叉树的遍历直接默写模板,然后查找两数之和可以通过哈希表实现。
Code
C++
class Solution
public:
vector<int> preorder_traversal(TreeNode* node)
vector<int> ans;
stack<TreeNode*> stk;
stk.push(node);
while (!stk.empty())
TreeNode* item = stk.top();
stk.pop();
ans.push_back(item->val);
if (item->right != nullptr)
stk.push(item->right);
if (item->left != nullptr)
stk.push(item->left);
return ans;
bool findTarget(TreeNode* root, int k)
if (!root)
return false;
vector<int> preorder_list = preorder_traversal(root);
unordered_map<int, int> hash_table;
for (int i = 0; i < preorder_list.size(); i++)
auto flag = hash_table.find(k - preorder_list[i]);
if (flag != hash_table.end())
return true;
hash_table[preorder_list[i]] = i;
return false;
;
以上是关于LeetCode Algorithm 剑指 Offer II 056. 二叉搜索树中两个节点之和的主要内容,如果未能解决你的问题,请参考以下文章