二叉搜索树相关
701. 二叉搜索树中的插入操作98. 验证二叉搜索树450. 删除二叉搜索树中的节点
701. 二叉搜索树中的插入操作
class Solution {
public TreeNode
insertIntoBST(TreeNode root
, int val
) {
if(root
==null
) return new TreeNode(val
);
if(root
.val
<val
) root
.right
=insertIntoBST(root
.right
,val
);
else{
root
.left
=insertIntoBST(root
.left
,val
);
}
return root
;
}
}
98. 验证二叉搜索树
1.递归
class Solution {
long min
= Long
.MIN_VALUE
;
public boolean isValidBST(TreeNode root
) {
if(root
==null
) return true;
if(!isValidBST(root
.left
)){
return false;
};
if(root
.val
<=min
) return false;
min
=root
.val
;
return isValidBST(root
.right
) ;
}
}
2.迭代
class Solution {
Stack
<TreeNode> q
=new Stack<>();
List
<Integer> res
=new ArrayList<>();
long min
=-Long
.MAX_VALUE
;
public boolean isValidBST(TreeNode root
) {
while(!q
.isEmpty()||root
!=null
){
while(root
!=null
){
q
.add(root
);
root
=root
.left
;
}
root
=q
.pop();
if(root
.val
<=min
) return false;
min
=root
.val
;
root
=root
.right
;
}
return true;
}
}
450. 删除二叉搜索树中的节点
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
;
}else{
TreeNode temp
= root
.right
;
while(temp
.left
!= null
){
temp
= temp
.left
;
}
temp
.left
= root
.left
;
return root
.right
;
}
}
return root
;
}
}
转载请注明原文地址:https://blackberry.8miu.com/read-46288.html