1. 二叉树的最大深度(简单)
地址: https://leetcode-cn.com/problems/maximum-depth-of-binary-tree/
2022/01/18
做题反思:
解法一:递归
class Solution {
public int maxDepth(TreeNode root) {
if (root == null) {
return 0;
}
int leftMax = maxDepth(root.left);
int rightMax = maxDepth(root.right);
return Math.max(leftMax, rightMax) + 1;
}
}
解法二:回溯
class Solution {
int depth = 0;
int res = 0;
public int maxDepth(TreeNode root) {
traverse(root);
return res;
}
public void traverse(TreeNode root) {
if (root == null) {
return;
}
depth++;
res = Math.max(res, depth);
traverse(root.left);
traverse(root.right);
depth--;
}
}
2. 对称二叉树(简单)
地址: https://leetcode-cn.com/problems/symmetric-tree/
2022/01/18
做题反思:
class Solution {
public boolean isSymmetric(TreeNode root) {
if (root == null) {
return true;
}
return check(root.left, root.right);
}
public boolean check(TreeNode left, TreeNode right) {
if (left == null || right == null) {
return left == right;
}
if (left.val != right.val) {
return false;
}
return check(left.left, right.right) && check(left.right, right.left);
}
}
3. 相同的树(简单)
地址: https://leetcode-cn.com/problems/same-tree/
2022/01/18
做题反思:
class Solution {
public boolean isSameTree(TreeNode p, TreeNode q) {
if (p == null || q == null) {
return p == q;
}
if (p.val != q.val) {
return false;
}
return isSameTree(p.left, q.left) && isSameTree(p.right, q.right);
}
}