手机网站php源码,去哪里建设自己的网站?,佛山网站建设排名,百度app交易平台450. 删除二叉搜索树中的节点
解题思路
搭建框架如果当前节点只有一个子节点 那么直接返回该节点拥有两个子节点 循环找到右边的最小值节点 也就是不断找左孩子
/*** Definition for a binary tree node.* public class TreeNode {* int val;* TreeNode left;* …450. 删除二叉搜索树中的节点
解题思路
搭建框架如果当前节点只有一个子节点 那么直接返回该节点拥有两个子节点 循环找到右边的最小值节点 也就是不断找左孩子
/*** 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(root.val key){// 删除操作// 如果当前节点只有一个子节点 那么直接返回if(root.left null){return root.right;}if(root.right null){return root.left;}// 该节点拥有两个子节点// 循环找到右边的最小值节点 TreeNode temp root.right;while(temp.left ! null){temp temp.left;}root.val temp.val;// 删除这个节点root.right deleteNode(root.right,temp.val);}else if(root.val key){// 左边进行搜索 递归root.left deleteNode(root.left,key);}else if(root.val key){// 向右边进行搜索root.right deleteNode(root.right,key);}return root;}
}