1. 程式人生 > 遊戲資訊 >TES輕取LNG進四強,官博精準總結獲贊破萬,亞運會ADC範圍縮小

TES輕取LNG進四強,官博精準總結獲贊破萬,亞運會ADC範圍縮小

✅做題思路or感想:

這道題的主旋律是:將節點值控制在[low, high]中

這裡因為會有刪減的操作,所以還是要有父子節點間的賦值,故要用有返回值的遞迴函式比較方便,且因為要修改一整棵樹,所以說要遍歷整棵樹

首先要明確帶返回值的遞迴函式的代表意義,這裡的遞迴函式表示的是修改好的搜尋二叉樹的頭節點

class Solution {
public:
    //明確遞迴函式的意義:修改好的頭節點
    TreeNode* trimBST(TreeNode* root, int low, int high) {
        //遞迴中止條件(有點通用的感覺)
        if (root == nullptr)return nullptr;
        //單層遞迴邏輯
        //這兩個if是為了對不正確的搜尋二叉樹進行休整,亦是刪除的一種(直接把正確的子節點返回到上一個節點去)
        if (root->val > high) {
            return trimBST(root->left, low, high);
        } else if (root->val < low) {
            return trimBST(root->right, low, high);
        }
        //這裡的邏輯就是遞迴整棵樹的邏輯,得到正確的左右子節點,然後返回便可
        root->left = trimBST(root->left, low, high);
        root->right = trimBST(root->right, low, high);
        return root;
    }
};