654.最大二叉树
题目链接:654. 最大二叉树 - 力扣(LeetCode)
递归:
class Solution {
public TreeNode constructMaximumBinaryTree(int[] nums) {
return buildTree(nums, 0, nums.length - 1);
}
private TreeNode buildTree(int[] nums,int s, int e) {
if(e < s) {
return null;
}
int max = nums[s], index = s;
for(int i = s; i <= e; ++i) {
if(max < nums[i]) {
index = i;
max = nums[i];
}
}
TreeNode node = new TreeNode(max);
node.left = buildTree(nums, s, index - 1);
node.right = buildTree(nums, index + 1, e);
return node;
}
}
617.合并二叉树
题目链接:617. 合并二叉树 - 力扣(LeetCode)
递归:
class Solution {
public TreeNode mergeTrees(TreeNode root1, TreeNode root2) {
if(root1 == null && root2 == null) {
return null;
}else if(root2 == null) {
return root1;
}else if(root1 == null) {
return root2;
}else {
root1.val += root2.val;
root1.left = mergeTrees(root1.left, root2.left);
root1.right = mergeTrees(root1.right, root2.right);
return root1;
}
}
}
非递归:
700.二叉搜索树中的搜索
题目链接:700. 二叉搜索树中的搜索 - 力扣(LeetCode)
递归:
class Solution {
public TreeNode searchBST(TreeNode root, int val) {
if(root == null) {
return null;
}else if(root.val == val) {
return root;
}else if(root.val < val) {
return searchBST(root.right, val);
}else {
return searchBST(root.left, val);
}
}
}
98.验证二叉搜索树
题目链接: