102.二叉树层序遍历
class Solution {
public List<List<Integer>> ultimate1 = new ArrayList<List<Integer>>();
public List<List<Integer>> levelOrder(TreeNode root) {
function(root);
return ultimate1;
}
public void function(TreeNode node) {
if(node == null) return;
Queue<TreeNode> que = new LinkedList<TreeNode>();
que.offer(node);
while(!que.isEmpty()){
List<Integer> ultimate2 = new ArrayList<Integer>();
int len = que.size();
while(len-- > 0){
TreeNode temp = que.poll();
ultimate2.add(temp.val);
if(temp.left != null) que.offer(temp.left);
if(temp.right != null) que.offer(temp.right);
}
ultimate1.add(ultimate2);
}
}
}
226.翻转二叉树
class Solution {
public TreeNode invertTree(TreeNode root) {
if(root == null) return null
//定位左孩子和右孩子,然后再告诉他们的妈妈给他们做交换
invertTree(root.left)
invertTree(root.right)
swap(root)
return root
}
private void swap(TreeNode root){
TreeNode temp = root.left
root.left = root.right
root.right = temp
}
}
101.对称二叉树
class Solution {
public boolean isSymmetric(TreeNode root) {
return compare(root.left,root.right);
}
private boolean compare(TreeNode left,TreeNode right){
if(left == null && right != null) return false;
if(left != null && right == null) return false;
if(left == null && right == null) return true;
if(left.val != right.val) return false;
boolean compareOutside = compare(left.left,right.right);
boolean compareInside = compare(left.right,right.left);
return compareOutside && compareInside;
}
}