zl程序教程

您现在的位置是:首页 >  其他

当前栏目

leetcode 700 二叉树中的搜索树

2023-09-27 14:29:24 时间

二叉树中的搜索树

在这里插入图片描述

递归法

/**
 * 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* new_root ;
    void get_subtree(TreeNode* cur, int target)
    {
        if(cur==nullptr) return;
        if(cur->val == target) 
        {
            new_root = cur;
            return;
        }
        get_subtree(cur->left , target) ;
        get_subtree(cur->right , target);
        
    }
    TreeNode* searchBST(TreeNode* root, int val) {
        if(root==nullptr) return nullptr;
        get_subtree(root,val);
        return new_root;
    }
};

二刷

/**
 * 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* searchBST(TreeNode* root, int val) {
        if(root == nullptr) return nullptr;
        if(root->val == val) return root;
        else if(root->val > val ) return searchBST(root->left,val);
        else if(root->val < val) return searchBST(root->right,val);
        return nullptr;
    }
};