# LeetCode - 0450. Delete Node in a BST ### 題目網址:https://leetcode.com/problems/delete-node-in-a-bst/ ###### tags: `LeetCode` `Medium` `圖論` ```cpp= /* -LeetCode format- Problem: 450. Delete Node in a BST Difficulty: Medium by Inversionpeter */ /** * 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* deleteNode(TreeNode* root, int key) { if (!root) return nullptr; if (root->val == key) { if (!root->left && !root->right) return nullptr; if (!root->right) return root->left; if (!root->left) return root->right; TreeNode *nowAt = root->left, *parent = root; while (nowAt->right) { parent = nowAt; nowAt = nowAt->right; } root->val = nowAt->val; if (parent->left == nowAt) parent->left = nowAt->left; else parent->right = nowAt->left; } else if (root->val > key) root->left = deleteNode(root->left, key); else root->right = deleteNode(root->right, key); return root; } }; ```