博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
delete-node-in-a-bst
阅读量:7061 次
发布时间:2019-06-28

本文共 2007 字,大约阅读时间需要 6 分钟。

https://leetcode.com/problems/delete-node-in-a-bst/

/** * 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:    TreeNode* deleteNode(TreeNode* root, int key) {        if (root == NULL) {            return NULL;        }        TreeNode* cur = root;        TreeNode* last = NULL;        while (cur != NULL && cur->val != key) {            if (cur->val > key) {                last = cur;                cur = cur->left;            }            else {                last = cur;                cur = cur->right;            }        }        if (cur == NULL) {            return root;        }        TreeNode* tlast = cur;        TreeNode* tcur;        if (cur->left != NULL) {            tcur = cur->left;            while (tcur->right != NULL) {                tlast = tcur;                tcur = tcur->right;            }            if (tcur == tlast->left) {                tlast->left = tcur->left;            }            else {                tlast->right = tcur->left;            }            cur->val = tcur->val;        }        else if (cur->right != NULL) {            tcur = cur->right;            while (tcur->left != NULL) {                tlast = tcur;                tcur = tcur->left;            }            if (tcur == tlast->left) {                tlast->left = tcur->right;            }            else {                tlast->right = tcur->right;            }            cur->val = tcur->val;        }        else {            if (last == NULL) {                // only root                return NULL;            }            if (cur == last->left) {                last->left = NULL;            }            else if (cur == last->right){                last->right = NULL;            }            else {                // error            }        }        return root;    }};

 

转载于:https://www.cnblogs.com/charlesblc/p/6021210.html

你可能感兴趣的文章
yarn.resourcemanager.ha.id设置
查看>>
主动调用其他类的成员, 特殊成员
查看>>
vim操作
查看>>
ASUS主板ALC887声卡,RTL81XX网卡,黑苹果驱动安装
查看>>
POJ 2251 Dungeon Master (三维BFS)
查看>>
C# 怎样判断 datagridview 中的checkbox列是否被选中
查看>>
嵌入式系统中地址的概念
查看>>
Linux 驱动编程知识
查看>>
网络基础, 进度条, 计算文件大小, shutil模块,
查看>>
Entity Framework 4 in Action读书笔记——第四章:使用LINQ to Entities查询:投影结果...
查看>>
新春快乐
查看>>
django框架的基础知识点《叁》
查看>>
面试题:数据库 已看1 各种优化 数据库引擎 有用
查看>>
html --- rem 媒体查询
查看>>
分享一下自己用c++写的小地图
查看>>
马尔可夫模型
查看>>
bzoj 1697: [Usaco2007 Feb]Cow Sorting牛排序
查看>>
js面向对象编程
查看>>
Tensorflow serving的编译
查看>>
JAVA API----Math类和Random类
查看>>