TES輕取LNG進四強,官博精準總結獲贊破萬,亞運會ADC範圍縮小
阿新 • • 發佈:2022-03-30
✅做題思路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; } };