###### tags: `LeetCode` `Tree` `Recursion` `Medium` # LeetCode #1325 [Delete Leaves With a Given Value](https://leetcode.com/problems/delete-leaves-with-a-given-value/) ### (Medium) (第一次沒做出來) 給你一棵以 root 為根的二元樹和一個整數 target ,請你刪除所有值為 target 的 葉子節點 。 注意,一旦刪除值為 target 的葉子節點,它的父節點就可能變成葉子節點;如果新葉子節點的值恰好也是 target ,那麼這個節點也應該被刪除。 也就是說,你需要重複此過程直到不能繼續刪除。 --- 雖然題目說是刪除葉節點後, 它的父節點可能因此變成葉節點, 故需要重複檢查, 但其實遞迴的特性本來就是先做完最底層的, 再將結果回傳到上一層...如此重複, 因此單純的處理完左右子節點最後再檢查root是否為葉節點並且root的值剛好等於target即可。 (別被題目的敘述給迷惑了) --- ``` class Solution { public: TreeNode* removeLeafNodes(TreeNode* root, int target) { if(root->left)root->left=removeLeafNodes(root->left, target); if(root->right)root->right=removeLeafNodes(root->right, target); return root->left==root->right&&root->val==target?nullptr:root; } }; ```
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up