LeetCode
程序员文章站
2022-03-05 10:52:47
...
100. 相同树
/**
* 100. 相同的树
*/
public class IsSameTree {
public boolean isSameTree(TreeNode p, TreeNode q) {
if (p == null && q == null) {
return true;
}
if (p != null && q != null && p.val == q.val) {
return isSameTree(p.left, q.left) && isSameTree(p.right, q.right);
}
return false;
}
class TreeNode {
int val;
private TreeNode left;
private TreeNode right;
TreeNode(int val) {
this.val = val;
}
}
}
101. 对称二叉树
/**
* 101. 对称二叉树
* 给定一个二叉树,检查它是否是镜像对称的。
*/
public class IsSymmetric {
public boolean isSymmetric(TreeNode root) {
return isMirror(root, root);
}
private boolean isMirror(TreeNode p, TreeNode q) {
if (p == null && q == null) {
return true;
}
if (p == null || q == null) {
return false;
}
return p.val == q.val && isMirror(p.left, q.right) && isMirror(p.right, q.left);
}
class TreeNode {
int val;
TreeNode left;
TreeNode right;
TreeNode(int val) {
this.val = val;
}
}
}
104. 二叉树的最大深度
/**
* 104. 二叉树的最大深度
*/
public class MaxDepth {
public int maxDepth(TreeNode root) {
if (root == null) {
return 0;
}
int leftDepth = maxDepth(root.left);
int rightDepth = maxDepth(root.right);
return Math.max(leftDepth, rightDepth) + 1;
}
class TreeNode {
int val;
TreeNode left;
TreeNode right;
TreeNode(int val) {
this.val = val;
}
}
}
108. 将有序数组转化成二叉搜索树
/**
* 108. 将有序数组转换为二叉搜索树
*/
public class SortedArrayToBST {
public TreeNode sortedArrayToBST(int[] nums) {
if (nums == null || nums.length == 0) {
return null;
}
return this.buildTree(nums, 0, nums.length-1);
}
private TreeNode buildTree(int[] nums, int l, int r) {
if (l > r) {
return null;
}
if (l == r) {
return new TreeNode(nums[l]);
}
int mid = (l + r)/2;
TreeNode root = new TreeNode(nums[mid]);
root.left = buildTree(nums, 0, mid -1);
root.right = buildTree(nums, mid + 1, r);
return root;
}
class TreeNode {
int val;
TreeNode left;
TreeNode right;
TreeNode(int val) {
this.val = val;
}
}
}