102.二叉树的层序遍历
List<List<Integer>> resList = new ArrayList<>();
public List<List<Integer>> levelOrder(TreeNode root) {
check(root, 0);
return resList;
}
public void check(TreeNode root, int deep) {
if (root == null) {
return;
}
deep++;
if (resList.size() < deep) {
resList.add(new ArrayList<>());
}
resList.get(deep - 1).add(root.val);
check(root.left, deep);
check(root.right, deep);
}
226.翻转二叉树
public TreeNode invertTree(TreeNode root) {
invert(root);
return root;
}
public void invert(TreeNode root){
if (root == null) {
return;
}
TreeNode temp = root.left;
root.left = root.right;
root.right = temp;
invert(root.left);
invert(root.right);
}
101. 对称二叉树
public boolean isSymmetric(TreeNode root) {
return compare(root.left, root.right);
}
public boolean compare(TreeNode left, TreeNode right) {
if (left == null && right == null) {
return true;
} else if (left != null && right == null) {
return false;
} else if (left == null && right != null) {
return false;
} else if (left.val != right.val) {
return false;
}
boolean inside = compare(left.right, right.left);
boolean outsied = compare(left.left, right.right);
return inside && outsied;
}