LeetCode 450 Delete Node in a BST(删除BST节点)
来源:互联网 发布:mac链接不上硬盘 编辑:程序博客网 时间:2024/06/05 05:17
Given a root node reference of a BST and a key, delete the node with the given key in the BST. Return the root node reference (possibly updated) of the BST.
Basically, the deletion can be divided into two stages:
- Search for a node to remove.
- If the node is found, delete the node.
Note: Time complexity should be O(height of tree).
Example:
root = [5,3,6,2,4,null,7]key = 3 5 / \ 3 6 / \ \2 4 7Given key to delete is 3. So we find the node with value 3 and delete it.One valid answer is [5,4,6,2,null,null,7], shown in the following BST. 5 / \ 4 6 / \2 7Another valid answer is [5,2,6,null,4,null,7]. 5 / \ 2 6 \ \ 4 7
题目大意:删除BST上的节点。
代码如下:
/** * Definition for a binary tree node. * struct TreeNode { * int val; * struct TreeNode *left; * struct TreeNode *right; * }; */ struct TreeNode* findMax(struct TreeNode* root){ if(root == NULL) return NULL; else if(root->right == NULL) return root; else return findMax(root->right);}struct TreeNode* deleteNode(struct TreeNode* root, int key) { if(root == NULL) return NULL; if(root->val < key){ root->right = deleteNode(root->right, key); }else if(root->val > key){ root->left = deleteNode(root->left, key); }else if(root->left && root->right){ struct TreeNode* tmp = findMax(root->left); root->val = tmp->val; root->left = deleteNode(root->left, tmp->val); }else{ struct TreeNode* tmp = root; if(root->left == NULL) root = root->right; else if(root->right == NULL) root = root->left; free(tmp); } return root;}
阅读全文
0 0
- LeetCode 450 Delete Node in a BST(删除BST节点)
- Leetcode 450. Delete Node in a BST 删除BST中的节点 解题报告
- [LeetCode]Delete Node in a BST
- LeetCode 450. Delete Node in a BST
- LeetCode 450. Delete Node in a BST
- Leetcode-450. Delete Node in a BST
- 【LeetCode】 450. Delete Node in a BST
- [LeetCode]450. Delete Node in a BST
- LeetCode 450. Delete Node in a BST
- LeetCode 450.Delete Node in a BST
- leetcode 450. Delete Node in a BST
- [LeetCode] 450. Delete Node in a BST
- leetcode 450. Delete Node in a BST 二叉搜索树BST删除结点
- [python]leetcode(450). Delete Node in a BST
- LeetCode[450]Delete Node in a BST(Java)
- 450 Delete Node in a BST
- Delete Node in a BST
- Delete Node in a BST
- 离散题目17 对称闭包
- mysql skip-networking,bind-address
- Java 并发编程:volatile的使用及其原理(转)
- JS 实现复制粘贴功能
- CoordinatorLayout
- LeetCode 450 Delete Node in a BST(删除BST节点)
- 01
- 单链表是否有环问题
- Java 日期处理工具类
- Oracle中char数据类型,length长度不足时,会自动用空格补上
- Easyui 分页 官方文档修改后很容易懂
- vue调用百度地图api时Bmap没有定义的解决办法
- centOS重装mariadb
- hue 设置中文