顺时针打印矩阵
class Solution {
int [] res ;
int count = 0;
public int[] spiralOrder(int[][] matrix) {
int m = matrix.length;
if(m==0) return new int[0];
int n = matrix[0].length;
res = new int [m*n];
dfs(matrix,0,n-1,0,m-1);
return res;
}
void dfs(int [][]matrix,int left ,int right,int top,int bottom){
if(left>right||top>bottom) return ;
for(int i = left ;i<=right;i++){
res[count++] = matrix[top][i];
}
top++;
if(left>right||top>bottom) return ;
for(int i=top;i<=bottom;i++){
res[count++] = matrix[i][right];
}
right--;
if(left>right||top>bottom) return ;
for(int i=right;i>=left;i--){
res[count++] = matrix[bottom][i];
}
bottom--;
if(left>right||top>bottom) return ;
for(int i = bottom;i>=top;i--){
res[count++] = matrix[i][left];
}
left++;
if(left>right||top>bottom) return ;
dfs(matrix,left,right,top,bottom);
}
}
从上到下打印二叉树-II
/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode(int x) { val = x; }
* }
*/
class Solution {
List<List<Integer>> lists = new LinkedList<>();
public List<List<Integer>> levelOrder(TreeNode root) {
//Queue进行层次遍历
if(root == null) return new LinkedList<>();
Queue<TreeNode> queue = new LinkedList<>();
queue.offer(root);
while(!queue.isEmpty()){
List<Integer> list = new LinkedList<>();
for(int i = queue.size(); i>0;i--){
TreeNode temp = queue.poll();
if(temp.left!=null) queue.offer(temp.left);
if(temp.right!=null) queue.offer(temp.right);
list.add(temp.val);
}
lists.add(list);
}
return lists;
}
}