日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

LeetCode450题—— 删除二叉搜索树中的节点

發(fā)布時間:2025/3/11 编程问答 17 豆豆
生活随笔 收集整理的這篇文章主要介紹了 LeetCode450题—— 删除二叉搜索树中的节点 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

首先需要認識什么是二叉搜索樹,可以進入百度詞條https://baike.baidu.com/item/%E4%BA%8C%E5%8F%89%E6%90%9C%E7%B4%A2%E6%A0%91/7077855?fr=aladdin

一定要注意題目要求算法時間復雜度是O(h)。

遞歸方法:

/*** Definition for a binary tree node.* public class TreeNode {* int val;* TreeNode left;* TreeNode right;* TreeNode() {}* TreeNode(int val) { this.val = val; }* TreeNode(int val, TreeNode left, TreeNode right) {* this.val = val;* this.left = left;* this.right = right;* }* }*/ class Solution {public TreeNode deleteNode(TreeNode root, int key) {if (root == null)return null;if (key == root.val) {// 1.leafif (root.left == null && root.right == null) {return null;} else if (root.left == null) { // 2.left is nullreturn root.right; } else if (root.right == null) { // 3.right is nullreturn root.left;} else { // 4.left and right are not nullTreeNode rightTreeMin = root.right;while (rightTreeMin.left != null) {rightTreeMin = rightTreeMin.left; //找到右子樹中最小的葉子節(jié)點}root.val = rightTreeMin.val;root.right = deleteNode(root.right, rightTreeMin.val);//繼續(xù)向當前root節(jié)點的右子樹遞歸,此時的key變成了rightTreeMin.val,以達到去刪除這個最小葉子節(jié)點的目的}} else if (key > root.val) {root.right = deleteNode(root.right, key);} else { //key<root.valroot.left = deleteNode(root.left, key);}return root;} }

參考博文:LeetCode 刪除二叉搜索樹中的節(jié)點(450題)遞歸與非遞歸

總結

以上是生活随笔為你收集整理的LeetCode450题—— 删除二叉搜索树中的节点的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內容還不錯,歡迎將生活随笔推薦給好友。