[LeetCode] 669.Trim a Binary Search Tree

来源:互联网 发布:家装erp软件 编辑:程序博客网 时间:2024/05/17 00:54

[LeetCode] 669.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 = 2

Output:
  1
   \
   2

Example 2:

Input:
    3
  /  \
  0  4
  \
  2
  /
 1

L = 1
R = 3

Output:
   3
    /
   2
  /
  1

解题思路

一道很简单的关于二叉搜索树的题目,解决这道题目的关键是明确二叉搜索树的概念,知道根节点和左右子节点之间的关系。判断L和R与节点的值的大小时出现的情况要想清楚,同时做出正确的递归。具体见代码。

实验代码

/** * Definition for a binary tree node. * struct TreeNode { *     int val; *     TreeNode *left; *     TreeNode *right; *     TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */class Solution {public:    TreeNode* trimBST(TreeNode* root, int L, int R) {        if (root == NULL) return NULL;        if (root->val < L) return trimBST(root->right, L, R);        if (root->val > R) return trimBST(root->left, L, R);        root->left = trimBST(root->left, L, R);        root->right = trimBST(root->right, L, R);        return root;    }};
阅读全文
0 0
原创粉丝点击