day17打卡

  1. 修剪二叉搜索树

/**

  • Definition for a binary tree node.

  • struct TreeNode {

  • int val;
    
  • TreeNode *left;
    
  • TreeNode *right;
    
  • TreeNode() : val(0), left(nullptr), right(nullptr) {}
    
  • TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
    
  • TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}
    
  • };
    /
    class Solution {
    public:
    TreeNode
    trimBST(TreeNode* root, int low, int high) {
    if(root == nullptr)
    {
    return nullptr;
    }
    if(root->val < low)
    {
    TreeNode *cur = root->right;

         TreeNode *right = trimBST(cur, low, high);
         return right;
     }
     if(root->val > high)
     {
         TreeNode *cur = root->left;
         
         TreeNode *left = trimBST(cur, low, high);
         return left;
    
     }
     root->left = trimBST(root->left, low, high);
     root->right = trimBST(root->right, low, high);
     return root;
    

    }
    };

2.将有序数组转化为二叉搜索树

/**

  • Definition for a binary tree node.
  • struct TreeNode {
  • int val;
    
  • TreeNode *left;
    
  • TreeNode *right;
    
  • TreeNode() : val(0), left(nullptr), right(nullptr) {}
    
  • TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
    
  • TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}
    
  • };
    */
    class Solution {
    public:
    TreeNode *traversal(vector& nums, int low, int high)
    {
    if(low <= high)
    {
    int mid = low + ((high - low) / 2);
    TreeNode root = new TreeNode(nums[mid]);
    root->left = traversal(nums, low, mid-1);
    root->right = traversal(nums, mid+1, high);
    return root;
    }
    return nullptr;
    }
    TreeNode
    sortedArrayToBST(vector& nums) {
    return traversal(nums, 0, nums.size()-1);
    }
    };

3.将二叉搜索树转化为累加树
/**

  • Definition for a binary tree node.
  • struct TreeNode {
  • int val;
    
  • TreeNode *left;
    
  • TreeNode *right;
    
  • TreeNode() : val(0), left(nullptr), right(nullptr) {}
    
  • TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
    
  • TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}
    
  • };
    /
    class Solution {
    public:
    TreeNode
    convertBST(TreeNode* root) {
    if(root == nullptr)
    {
    return nullptr;
    }
    root->right = convertBST(root->right);
    if(pre)
    {
    root->val += pre->val;
    }
    pre = root;
    root->left = convertBST(root->left);
    return root;
    }
    private:
    TreeNode *pre = nullptr;
    };
posted @   ikun1111  阅读(4)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示