力扣102 二叉树的层序遍历
class Solution {
public List<List<Integer>> reslist = new ArrayList<List<Integer>>();
public List<List<Integer>> levelOrder(TreeNode root) {
checkfun(root);
return reslist;
}
public void checkfun(TreeNode root) {
if(root == null) return;
Queue<TreeNode> nodeque = new LinkedList<TreeNode>();
int len = 1;
nodeque.offer(root);
while(!nodeque.isEmpty()) {
List<Integer> itemlist = new ArrayList<>();
while(len > 0) {
TreeNode tmpnode = nodeque.poll();
itemlist.add(tmpnode.val);
if(tmpnode.left != null) nodeque.offer(tmpnode.left);
if(tmpnode.right != null) nodeque.offer(tmpnode.right);
len--;
}
len = nodeque.size();
reslist.add(itemlist);
}
}
}
力扣226 翻转二叉树
class Solution {
public TreeNode invertTree(TreeNode root) {
if(root == null) return root;
TreeNode tmpnode = new TreeNode();
tmpnode = root.left;
root.left = root.right;
root.right = tmpnode;
invertTree(root.left);
invertTree(root.right);
return root;
}
}
力扣101 对称二叉树
class Solution {
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 outside = compare(left.left, right.right);
boolean inside = compare(left.right, right.left);
return outside && inside;
}
}