problemscpp
A collection of my answers to algorithm problems in c++.
Public 成员函数 | Private 属性 | 所有成员列表
leetcode::delete_node_in_a_bst::Solution类 参考

#include <leetcode.h>

Public 成员函数

TreeNodedeleteNode (TreeNode *root, int key)
 
TreeNodefindMaximum (TreeNode *node)
 
TreeNodefindMinimum (TreeNode *node)
 
void remove (TreeNode *node)
 

Private 属性

TreeNodeprev
 

详细描述

在文件 leetcode.h2720 行定义.

成员函数说明

◆ deleteNode()

TreeNode * leetcode::delete_node_in_a_bst::Solution::deleteNode ( TreeNode root,
int  key 
)

在文件 leetcode.cpp7445 行定义.

7445 {
7446 if(root == nullptr) {
7447 return root;
7448 }
7449 TreeNode *current = root;
7450 while(current != nullptr && current->val != key) {
7451 if(current->val == key) {
7452 break;
7453 }
7454 prev = current;
7455 if(current->val < key) {
7456 current = current->right;
7457 } else {
7458 current = current->left;
7459 }
7460 }
7461 if(current == nullptr) {
7462 return root;
7463 }
7464 if(root->left == nullptr && root->right == nullptr) {
7465 return nullptr;
7466 }
7467 remove(current);
7468 return root;
7469 }
vector< int > root
Definition: acwing408.cpp:349
TreeNode * left
Definition: leetcode.h:25
TreeNode * right
Definition: leetcode.h:26

引用了 leetcode::TreeNode::left, prev, remove(), leetcode::TreeNode::right, acwing::acwing836_408::root , 以及 leetcode::TreeNode::val.

◆ findMaximum()

TreeNode * leetcode::delete_node_in_a_bst::Solution::findMaximum ( TreeNode node)

在文件 leetcode.cpp7400 行定义.

7400 {
7401 TreeNode *current = node;
7402 while(current->right != nullptr) {
7403 prev = current;
7404 current = current->right;
7405 }
7406 return current;
7407 }

引用了 prev , 以及 leetcode::TreeNode::right.

被这些函数引用 remove().

◆ findMinimum()

TreeNode * leetcode::delete_node_in_a_bst::Solution::findMinimum ( TreeNode node)

在文件 leetcode.cpp7409 行定义.

7409 {
7410 TreeNode *current = node;
7411 while(current->left != nullptr) {
7412 prev = current;
7413 current = current->left;
7414 }
7415 return current;
7416 }

引用了 leetcode::TreeNode::left , 以及 prev.

被这些函数引用 remove().

◆ remove()

void leetcode::delete_node_in_a_bst::Solution::remove ( TreeNode node)

在文件 leetcode.cpp7418 行定义.

7418 {
7419 if(node->right != nullptr) {
7420 prev = node;
7421 auto *const rmin = findMinimum(node->right);
7422 node->val = rmin->val;
7423 remove(rmin);
7424 return;
7425 }
7426 if(node->left != nullptr) {
7427 prev = node;
7428 auto *const lmax = findMaximum(node->left);
7429 node->val = lmax->val;
7430 remove(lmax);
7431 return;
7432 }
7433 if(prev != nullptr) {
7434 if(prev->left != nullptr && prev->left->val == node->val) {
7435 prev->left = nullptr;
7436 } else if(prev->right != nullptr && prev->right->val == node->val) {
7437 prev->right = nullptr;
7438 }
7439 } else {
7440 exit(-1);
7441 }
7442 //delete node;
7443 }
int rmin[100010]
Definition: pat.cpp:5097
int lmax[100010]
Definition: pat.cpp:5096
TreeNode * findMinimum(TreeNode *node)
Definition: leetcode.cpp:7409
TreeNode * findMaximum(TreeNode *node)
Definition: leetcode.cpp:7400

引用了 findMaximum(), findMinimum(), leetcode::TreeNode::left, pat::a::a7_2::lmax, prev, remove(), leetcode::TreeNode::right, pat::a::a7_2::rmin , 以及 leetcode::TreeNode::val.

被这些函数引用 deleteNode() , 以及 remove().

类成员变量说明

◆ prev

TreeNode* leetcode::delete_node_in_a_bst::Solution::prev
private

在文件 leetcode.h2721 行定义.

被这些函数引用 deleteNode(), findMaximum(), findMinimum() , 以及 remove().


该类的文档由以下文件生成: