日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

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

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

首先需要認識什么是二叉搜索樹,可以進入百度詞條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; //找到右子樹中最小的葉子節點}root.val = rightTreeMin.val;root.right = deleteNode(root.right, rightTreeMin.val);//繼續向當前root節點的右子樹遞歸,此時的key變成了rightTreeMin.val,以達到去刪除這個最小葉子節點的目的}} else if (key > root.val) {root.right = deleteNode(root.right, key);} else { //key<root.valroot.left = deleteNode(root.left, key);}return root;} }

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

總結

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

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