【二叉搜索树:删除指定结点】leetcode 450. Delete Node in a BST

来源:互联网 发布:2017汽车销售数据 编辑:程序博客网 时间:2024/06/01 19:13

leetcode 450. Delete Node in a BST

/** * Definition for a binary tree node. * public class TreeNode { *     int val; *     TreeNode left; *     TreeNode right; *     TreeNode(int x) { val = x; } * } */public class Solution {    public TreeNode deleteNode(TreeNode root, int key) {        if(root==null) return null;        if(root.val>key){            root.left = deleteNode(root.left, key);        }        else if(root.val<key){            root.right = deleteNode(root.right, key);        }else{            if(root.left==null){                return root.right;            }else if(root.right==null){                return root.left;            }            TreeNode min = findmin(root.right);            root.val = min.val;            root.right = deleteNode(root.right, root.val);        }        return root;    }        private TreeNode findmin(TreeNode node){        while(node.left!=null){            node = node.left;        }        return node;    }}