码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 树——二叉查找树 - 有删除动作


     代码:

    1. #include
    2. #include
    3. #include
    4. #include
    5. using namespace std;
    6. const int N=1e6+10;
    7. int l[N],r[N];
    8. int d[N],idx;
    9. char a[7];
    10. int n;
    11. int h;
    12. void intree(int x,int father)
    13. {
    14. if(x>d[father])
    15. {
    16. if(r[father]==-1)
    17. {
    18. r[father]=++idx;
    19. d[idx]=x;
    20. }else
    21. {
    22. intree(x,r[father]);
    23. }
    24. }else if(x
    25. {
    26. if(l[father]==-1)
    27. {
    28. l[father]=++idx;
    29. d[idx]=x;
    30. }else
    31. {
    32. intree(x,l[father]);
    33. }
    34. }else
    35. return;
    36. }
    37. bool get(int x)
    38. {
    39. int p=h;
    40. while(1)
    41. {
    42. if(x==d[p])return true;
    43. else if(x>d[p])
    44. {
    45. if(r[p]==-1)
    46. {
    47. return false;
    48. }else
    49. {
    50. p=r[p];
    51. }
    52. }else
    53. {
    54. if(l[p]==-1)
    55. {
    56. return false;
    57. }else
    58. {
    59. p=l[p];
    60. }
    61. }
    62. }
    63. return false;
    64. }
    65. int get_lmin(int p,int father)
    66. {
    67. if(r[p]==-1)
    68. {
    69. if(l[father]==p)
    70. {
    71. l[father]=l[p];
    72. }else
    73. {
    74. r[father]=l[p];
    75. }
    76. return p;
    77. }else
    78. {
    79. return get_lmin(r[p], p);
    80. }
    81. }
    82. int get_rmin(int p,int father)
    83. {
    84. if(l[p]==-1)
    85. {
    86. if(l[father]==p)
    87. {
    88. l[father]=r[p];
    89. }else
    90. {
    91. r[father]=r[p];
    92. }
    93. return p;
    94. }else
    95. {
    96. return get_rmin(l[p],p);
    97. }
    98. }
    99. void dele(int x,int p,int father)
    100. {
    101. if(d[p]==x)
    102. {
    103. if(l[p]!=-1)
    104. {
    105. d[p]=d[get_lmin(l[p],p)];
    106. }else if(r[p]!=-1)
    107. {
    108. d[p]=d[get_rmin(r[p],p)];
    109. }else if(r[p]==-1&&l[p]==-1)
    110. {
    111. if(d[l[father]]==x)
    112. {
    113. l[father]=-1;
    114. }else
    115. {
    116. r[father]=-1;
    117. }
    118. }
    119. }else if(x>d[p])
    120. {
    121. dele(x,r[p],p);
    122. }else
    123. {
    124. dele(x,l[p],p);
    125. }
    126. }
    127. void output()
    128. {
    129. queue<int>que;
    130. que.push(1);
    131. while(que.size())
    132. {
    133. int t=que.front();
    134. cout<' ';
    135. que.pop();
    136. if(l[t]!=-1)que.push(l[t]);
    137. if(r[t]!=-1)que.push(r[t]);
    138. }
    139. }
    140. int main()
    141. {
    142. int b;
    143. h=0;
    144. d[h]=1e9;
    145. memset(d,0x3f,sizeof d);
    146. memset(l,-1,sizeof l);
    147. memset(r,-1,sizeof r);
    148. scanf("%d",&n);
    149. while(n--)
    150. {
    151. scanf("%s%d",a+1,&b);
    152. if(a[1]=='i')
    153. {
    154. intree(b,h);
    155. }else if(a[1]=='f')
    156. {
    157. if(get(b))
    158. {
    159. puts("yes");
    160. }else
    161. puts("no");
    162. }else
    163. {
    164. // output();
    165. // cout<
    166. dele(b,l[h],h);
    167. //output();
    168. }
    169. }
    170. return 0;
    171. }

  • 相关阅读:
    22-08-12 西安 尚医通(05) JWT令牌、阿里云发送短信验证码
    网页设计成品DW静态网页Html5响应式css3 (餐厅 6页 带轮播图)
    将Apache访问日志保存到MySQL数据库
    YOLO目标检测——复杂场景人员数据集【含对应voc、coco和yolo三种格式标签】
    多项式算法——快速数论变换NTT
    JavaScript代码是怎么在浏览器里面运行起来的?
    【二次分配问题】基于遗传算法 (GA)、粒子群优化 (PSO) 和萤火虫算法 (FA) 求解二次分配( QAP)问题(MATLAB 实现)
    连锁门店如何利用共享门店模式实现转型升级
    keepAlive
    深度学习问答题(更新中)
  • 原文地址:https://blog.csdn.net/m0_62327332/article/details/126625754
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号