层序遍历
文章讲解:代码随想录
class Solution {
List<List<Integer>> lists = new ArrayList<>();
public List<List<Integer>> levelOrder(TreeNode root) {
if (root == null)
return lists;
Queue<TreeNode> queue = new LinkedList<>();
queue.offer(root);
while(!queue.isEmpty()){
int size = queue.size();
List<Integer> list = new ArrayList<>();
for (int i = 0; i < size; i++) {
TreeNode temp = queue.poll();
list.add(temp.val);
if(temp.left != null)
queue.offer(temp.left);
if(temp.right!=null)
queue.offer(temp.right);
}
lists.add(list);
}
return lists;
}
}
翻转二叉树
文章讲解:代码随想录
class Solution {
public TreeNode invertTree(TreeNode root) {
TreeNode temp = root;
function(temp);
return root;
}
public void function(TreeNode root){
if(root!=null){
TreeNode temp = root.left;
root.left = root.right;
root.right = temp;
function(root.left);
function(root.right);
}
}
}
对称二叉树
文章讲解:代码随想录
class Solution {
public boolean isSymmetric(TreeNode root) {
return isSame(root.left,root.right);
}
public boolean isSame(TreeNode left,TreeNode right){
if(left == null && right == null)
return true;
if(left == null && right !=null)
return false;
if(left != null && right ==null)
return false;
if(left.val != right.val)
return false;
boolean l = isSame(left.left,right.right);
boolean r = isSame(left.right,right.left);
return l && r;
}
}