您的位置:首页 > Web前端 > Node.js

leetcode-450.delete a node in a BST

2017-09-27 14:30 369 查看
考察点:二叉树

思路:递归删除,有两种删法;

C++ 代码:

/**
* Definition for a binary tree node.
* struct TreeNode {
*     int val;
*     TreeNode *left;
*     TreeNode *right;
*     TreeNode(int x) : val(x), left(NULL), right(NULL) {}
* };
*/
class Solution {
public:

void r_to_l(TreeNode* right, TreeNode* left) {

TreeNode* temp = left->right;
TreeNode * pre = left;
while (temp) {
pre = temp;
temp = temp->right;
}
pre->right = right;
}

TreeNode* deleteNode(TreeNode* root, int key) {
if (root == NULL) {
return root;
}
if (root->val == key) {

if (root->left) {
TreeNode * temp = root->right;
root = root->left;
r_to_l(temp, root);
return root;
} else {
return root->right;
}
}
if (root->val > key) {
root->left = deleteNode(root->left, key);
return root;
} else if (root->val < key) {
root->right = deleteNode(root->right, key);
}

return root;
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: