654.最大二叉树
题目链接:654. 最大二叉树 - 力扣(LeetCode)
class Solution {
public TreeNode constructMaximumBinaryTree(int[] nums) {
return binaryTree(nums,0,nums.length);
}
public TreeNode binaryTree(int[] nums,int leftIndex,int rightIndex){
if(rightIndex - leftIndex < 1) return null;
if(rightIndex - leftIndex == 1) return new TreeNode(nums[leftIndex]);
int maxIndex = leftIndex;
int maxVal = nums[maxIndex];
for(int i = leftIndex +1 ;i<rightIndex;i++){
if(nums[i] > maxVal){
maxIndex = i;
maxVal = nums[i];
}
}
TreeNode root = new TreeNode(maxVal);
root.left = binaryTree(nums,leftIndex,maxIndex);
root.right = binaryTree(nums,maxIndex+1,rightIndex);
return root;
}
}
617.合并二叉树
题目链接:617. 合并二叉树 - 力扣(LeetCode)
class Solution {
public TreeNode mergeTrees(TreeNode root1, TreeNode root2) {
if(root1 == null) return root2;
if(root2 == null) return root1;
TreeNode root3 = new TreeNode(0);
root3.val = root1.val + root2.val;
root3.left = mergeTrees(root1.left,root2.left);
root3.right = mergeTrees(root1.right,root2.right);
return root3;
}
}
700.二叉搜索树中的搜索
题目链接:700. 二叉搜索树中的搜索 - 力扣(LeetCode)
class Solution {
public TreeNode searchBST(TreeNode root, int val) {
if(root == null || root.val == val) return root;
if(root.val > val) {
return searchBST(root.left,val);
}
else {
return searchBST(root.right,val);
}
}
}
98.验证二叉搜索树
题目链接:98. 验证二叉搜索树 - 力扣(LeetCode)
class Solution {
TreeNode pre = null;
public boolean isValidBST(TreeNode root) {
if(root == null) return true;
boolean left = isValidBST(root.left);
if(pre != null && pre.val >= root.val){
return false;
}
pre = root;
boolean right = isValidBST(root.right);
return left && right;
}
}