LeetCode669. Trim a Binary Search Tree

来源:互联网 发布:手持gps数据采集器 编辑:程序博客网 时间:2024/06/15 17:07

LeetCode669. Trim a Binary Search Tree

题目:

Given a binary search tree and the lowest and highest boundaries as L and R, trim the tree so that all its elements lies in [L, R] (R >= L). You might need to change the root of the tree, so the result should return the new root of the trimmed binary search tree.

Example 1:

Input:     1   / \  0   2  L = 1  R = 2Output:     1      \       2

Example 2:

Input:     3   / \  0   4   \    2   /  1  L = 1  R = 3Output:       3     /    2     / 1


题目分析:
这是一个树,第一想到的肯定是递归实现,但是递归需要终止条件,和跳转条件。
跳转条件大概如下:
if (!root) return root;if (root->val > R) return trimBST(root->left, L, R);if (root->val < L) return trimBST(root->right, L, R);if (!root->left&&!root->right) return root;if (root->left) root->left = trimBST(root->left, L, root->val);if (root->right) root->right = trimBST(root->right, root->val, R);return root;

代码:
class Solution {public:    TreeNode* trimBST(TreeNode* root, int L, int R) {        if (!root) return root;        if (root->val > R) return trimBST(root->left, L, R);        if (root->val < L) return trimBST(root->right, L, R);        if (!root->left&&!root->right) return root;        if (root->left) root->left = trimBST(root->left, L, root->val);        if (root->right) root->right = trimBST(root->right, root->val, R);        return root;    }};


原创粉丝点击