目录
1.二叉搜索树与双向链表
import java.util.*;
/**
public class TreeNode {
int val = 0;
TreeNode left = null;
TreeNode right = null;
public TreeNode(int val) {
this.val = val;
}
}
*/
public class Solution {
public TreeNode head=null;
public TreeNode pre=null;
public TreeNode Convert(TreeNode root) {
inOrder(root);
return head;
}
public void inOrder(TreeNode root){
if(root==null){
return ;
}
inOrder(root.left);
if(pre==null){
pre=root;
head=root;
}else{
pre.right=root;
root.left=pre;
pre=root;
}
inOrder(root.right);
}
}
2.合并二叉树
import java.util.*;
/*
* public class TreeNode {
* int val = 0;
* TreeNode left = null;
* TreeNode right = null;
* public TreeNode(int val) {
* this.val = val;
* }
* }
*/
public class Solution {
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param t1 TreeNode类
* @param t2 TreeNode类
* @return TreeNode类
*/
public TreeNode mergeTrees (TreeNode t1, TreeNode t2) {
// write code here
if(t1==null){
return t2;
}
if(t2==null){
return t1;
}
TreeNode head=new TreeNode(t1.val+t2.val);
head.left=mergeTrees(t1.left,t2.left);
head.right=mergeTrees(t1.right,t2.right);
return head;
}
}
3.二叉树的镜像
import java.util.*;
/*
* public class TreeNode {
* int val = 0;
* TreeNode left = null;
* TreeNode right = null;
* public TreeNode(int val) {
* this.val = val;
* }
* }
*/
public class Solution {
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param pRoot TreeNode类
* @return TreeNode类
*/
public TreeNode Mirror (TreeNode root) {
// write code here
if(root==null) return null;
TreeNode head=new TreeNode(root.val);
head.left=Mirror(root.right);
head.right=Mirror(root.left);
return head;
}
}
4.判断是不是二叉搜索树
import java.util.*;
/*
* public class TreeNode {
* int val = 0;
* TreeNode left = null;
* TreeNode right = null;
* public TreeNode(int val) {
* this.val = val;
* }
* }
*/
public class Solution {
public boolean isValidBST(TreeNode root) {
return isValidBSTHelper(root, Long.MIN_VALUE, Long.MAX_VALUE);
}
public boolean isValidBSTHelper(TreeNode root, long minVal, long maxVal) {
if (root == null) return true;
if (root.val <= minVal || root.val >= maxVal) {
return false;
}
return isValidBSTHelper(root.left, minVal, root.val) && isValidBSTHelper(root.right, root.val, maxVal);
}
}