您当前的位置: 首页 >  搜索

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

发布时间:2021-12-20 09:10:01 ,浏览量:0

剑指 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; } }; 
关注
打赏
1688896170
查看更多评论

暂无认证

  • 0浏览

    0关注

    108697博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文
立即登录/注册

微信扫码登录

0.4473s