AtOffer笔记-二叉树的镜像&顺时针打印矩阵&包含min函数的栈
来源:互联网 发布:c语言汉诺塔游戏 编辑:程序博客网 时间:2024/05/19 07:10
1、二叉树的镜像
package 剑指offer;/** * 题目描述:操作给定的二叉树,将其变换为源二叉树的镜像。 * @author 崔洪振367 * @version 创建时间:2017年7月20日 下午10:16:55 */public class 二叉树的镜像 {public void Mirror(TreeNode root){if(root == null){return;}//当一个节点是叶子节点是,不用调换他的左右节点了。if(root.left == null && root.right == null){return;}//使用先序遍历二叉树,然后将他的左右子树进行调换//1、交换根节点的左右字节点,需要一个二叉树结点变量。TreeNode temp = root.left;root.left = root.right;root.right = temp;if(root.left != null){Mirror(root.left);}if(root.right != null){Mirror(root.right);}}}
2、顺时针打印矩阵
package 剑指offer;import java.util.ArrayList;/** * 题目描述:输入一个矩阵,按照按照从外向里以顺时针的顺序依次打印出每一个数字。 * @author 崔洪振367 * @version 创建时间:2017年7月20日 下午10:36:31 * 解题思路:题目思路不难,但注意边界条件值的判断。 * 两次分析:1)每次打印一周,以(start,start)为打印的起始点,同时判断打印的次数; * 2)每次打印一周,包括四个部分:从左到右,从上到下,从右到左,从下到上。尤其注意边界条件。 */public class 顺时针打印矩阵 {public ArrayList<Integer> printMatrix(int[][] matrix){//合法性判断if(matrix == null || matrix.length == 0){return null;}ArrayList<Integer> list = new ArrayList<>();//以(start,start)为起始点变量一周,循环遍历个圈的起始点所在的一周,//循环满足的条件是矩阵的行>起点Y的2倍,矩阵的列>起点X的2倍int start = 0;int X = matrix.length;//X行int Y = matrix[0].length;//Y列while(X > start*2 && Y > start*2){//遍历一周,将符合条件的元素添加到ArrayList中。int endX = X - 1 - start;int endY = Y - 1 -start;//从左到右添加元素----行不变,列加for(int j = start; j <= endY; j++){int temp = matrix[start][j];list.add(temp);}//从上到下添加元素----行加列不变if(start < endX){for(int i = start+1; i <= endX; i++){list.add(matrix[i][endY]);}}//从右到左添加元素----行不变列减if(start<endX && start<endY){for(int j=endY-1; j>=start; j--){list.add(matrix[endX][j]);}}//从下到上添加元素----列不变行减if(start < endX-1 && start < endY){for(int i = endX-1; i>=start+1; i--){list.add(matrix[i][start]);}}start++;}return list;}}
3、包含min的函数栈
package 剑指offer;import java.util.Stack;/** * 题目描述:定义栈的数据结构,请在该类型中实现一个能够得到最小元素的min函数。 * @author 崔洪振367 * @version 创建时间:2017年7月20日 下午11:18:07 * 解题思路:需要两个栈配合使用。 */public class 包含min函数的栈 {Stack<Integer> stack = new Stack<>();Stack<Integer> st_min = new Stack<>();public void push(int node){stack.push(node);if(st_min.size() == 0 || node<top()){st_min.push(node);}else {st_min.push(top());//针对stack中的每个元素都对应一个最小值}}public void pop(){if(stack.size()>0 && st_min.size()>0){stack.pop();st_min.pop();}}public int top(){return st_min.peek();}public int min(){if(st_min.size()>0 && stack.size()>0){return top();}return -1;}}
阅读全文
0 0
- AtOffer笔记-二叉树的镜像&顺时针打印矩阵&包含min函数的栈
- 二叉树的镜像||顺时针打印矩阵
- 剑指Offer面试题20顺时针打印矩阵,面试题21包含min函数的栈
- 矩阵的顺时针打印
- 笔记 包含min函数的栈
- 顺时针打印nxn的矩阵
- 包含min函数的栈
- 包含min函数的栈
- 包含min函数的栈
- 包含min函数的栈
- 包含min函数的栈
- 包含min函数的栈
- 包含min函数的栈
- 包含min函数的栈
- 包含min函数的栈
- 包含min 函数的栈
- 包含min函数的栈
- 包含min函数的栈
- 数理逻辑1 -- 命题演算4
- Maven常用命令
- ES6基础教程(4)-字符串拓展
- caffe-windows的安装和配置(cpu)
- GraphicsStatsService常见的几个问题带来的思考
- AtOffer笔记-二叉树的镜像&顺时针打印矩阵&包含min函数的栈
- 暑期项目开发实训 Day25
- Python包安装:Arcpy 与 PCI 在 Anaconda 中的集成
- hdu 1072 Nightmare
- git 的安装和使用
- SpringMvc入门到开发(二)之基本原理
- Nginx系列—虚拟主机配置的三种方式(二)
- 文件权限篇(一)
- webstorm 控制台输出中文乱码