653.两数之和 IV - 输入 BST 发表于 2020-03-14 | 分类于 LeetCode 字数统计: 233 | 阅读时长 ≈ 1一、题目描述给定一个二叉搜索树和一个目标结果,如果 BST 中存在两个元素且它们的和等于给定的目标结果,则返回 true。案例 1:12345678910输入: 5 / \ 3 6 / \ \2 4 7Target = 9输出: True案例 2:12345678910输入: 5 / \ 3 6 / \ \2 4 7Target = 28输出: False二、题解1.中序遍历+for嵌套1.1 思路使用中序遍历得到一个递增数组遍历递增数组1.2 代码12345678910111213141516171819202122232425262728293031323334/** * Definition for a binary tree node. * struct TreeNode { * int val; * struct TreeNode *left; * struct TreeNode *right; * }; */#define maxSize 10000bool findTarget(struct TreeNode *root, int k){ if (root == NULL) return false; int arr[maxSize]; int arrTop = -1; struct TreeNode *stack[maxSize], *p = root; int stackTop = -1; while (stackTop != -1 || p != NULL) { while (p != NULL) { stack[++stackTop] = p; p = p->left; } p = stack[stackTop--]; arr[++arrTop] = p->val; p = p->right; } for (int i = 0; i < arrTop; i++) for (int j = i + 1; j <= arrTop; j++) if (arr[i] + arr[j] == k) return true; return false;}