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

Posted _Alex_007

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode Algorithm 剑指 Offer II 056. 二叉搜索树中两个节点之和相关的知识,希望对你有一定的参考价值。

剑指 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. 二叉搜索树中两个节点之和的主要内容,如果未能解决你的问题,请参考以下文章

LeetCode Algorithm 剑指 Offer 24. 反转链表

LeetCode Algorithm 剑指 Offer 18. 删除链表的节点

LeetCode Algorithm 剑指 Offer 06. 从尾到头打印链表

LeetCode Algorithm 剑指 Offer 22. 链表中倒数第k个节点

LeetCode Algorithm 剑指 Offer 24. 反转链表

LeetCode Algorithm 剑指 Offer 57 - II. 和为s的连续正数序列