LeetCode-450 二叉搜索树删除一个节点
2018-09-11 21:02
537 查看
二叉搜索树
建树
删除节点,三种情况,递归处理。左右子树都存在,两种方法,一种找到左子树最大节点,赋值后递归删除。找右子树最小同理
class Solution { public: TreeNode* deleteNode(TreeNode* root, int key) { if(root==NULL)return NULL; if(root->val>key) { root->left = deleteNode(root->left,key); return root; } if(root->val<key) { root->right = deleteNode(root->right,key); return root; } if(root->left==NULL&&root->right==NULL)return NULL; if(root->left==NULL&&root->right!=NULL)return root->right; if(root->left!=NULL&&root->right==NULL)return root->left; int val = findMax(root->left); root->val=val; root->left = deleteNode(root->left,val); return root; } int findMax(TreeNode* root) { if(root->right==NULL)return root->val; return findMax(root->right); } };
相关文章推荐
- LeetCode 237. Delete Node in a Linked List(删除链表中的一个节点)
- LeetCode 450 Delete Node in a BST(删除BST节点)
- LeetCode 237. Delete Node in a Linked List - 删除链表中的一个节点
- [LeetCode] Delete Node in a BST 删除二叉搜索树中的节点
- 用jquery删除一个节点
- 编程实现一个单链表节点的删除
- (LeetCode)Remove Linked List Elements --- 删除节点元素
- [LeetCode]79. Delete Node in a Linked List删除链表节点
- [面试算法题]有序列表删除节点-leetcode学习之旅(4)
- 用O(1)时间,删除一个链表节点(3)
- [C++]LeetCode 19: Remove Nth Node From End of List(删除链表中倒数第n个节点)
- 每天一道LeetCode-----二叉搜索树的某两个节点被交换位置,修正这个二叉搜索树
- 【链表面试题】删除无头单链表的非尾节点,插入一个元素到无头链表指定位置
- LeetCode237_Delete Node in a Linked List(删除链表中的节点) Java题解
- 【C语言】删除一个节点(仅一个)(单向物理链式结构)
- [LeetCode] 237. Delete Node in a Linked List 删除链表的节点
- Critical Set(删除无向图的一个节点或者两个节点或者三个节点之后有几个连通分量?)
- 在二叉树中删除一个节点——归并删除法
- 实现双向链表删除一个节点P,在节点P后插入一个节点
- 数据结构和算法设计专题之---单链表中在指定的节点前面插入以及删除一个节点