题目描述
请实现两个函数,分别用来序列化和反序列化二叉树
二叉树的序列化是指:把一棵二叉树按照某种遍历方式的结果以某种格式保存为字符串,从而使得内存中建立起来的二叉树可以持久保存。序列化可以基于先序、中序、后序、层序的二叉树遍历方式来进行修改,序列化的结果是一个字符串,序列化时通过 某种符号表示空节点(#),以 ! 表示一个结点值的结束(value!)。
二叉树的反序列化是指:根据某种遍历顺序得到的序列化字符串结果 str,重构二叉树。
1  | String delimiter = ",";  | 
我在转角吃炒粉。
请实现两个函数,分别用来序列化和反序列化二叉树
二叉树的序列化是指:把一棵二叉树按照某种遍历方式的结果以某种格式保存为字符串,从而使得内存中建立起来的二叉树可以持久保存。序列化可以基于先序、中序、后序、层序的二叉树遍历方式来进行修改,序列化的结果是一个字符串,序列化时通过 某种符号表示空节点(#),以 ! 表示一个结点值的结束(value!)。
二叉树的反序列化是指:根据某种遍历顺序得到的序列化字符串结果 str,重构二叉树。
1  | String delimiter = ",";  | 
给定一棵二叉搜索树,请找出其中的第 k 小的结点。例如,(5,3,7,2,4,6,8)中,按结点数值大小顺序第三小结点的值为 4。
1  | List<TreeNode> mList = new ArrayList<>();  | 
给定一个数组和滑动窗口的大小,找出所有滑动窗口里数值的最大值。例如,如果输入数组 {2, 3, 4, 2, 6, 2, 5, 1} 及滑动窗口的大小 3,那么一共存在 6 个滑动窗口,他们的最大值分别为 {4, 4, 6, 6, 6, 5}; 针对数组{2 , 3, 4, 2, 6, 2, 5, 1} 的滑动窗口有以下 6 个: {[2 ,3 , 4], 2, 6, 2, 5, 1}, {2, [3, 4, 2], 6, 2, 5, 1}, {2, 3, [4, 2, 6], 2, 5, 1}, {2, 3, 4, [2, 6, 2], 5, 1}, {2,3, 4, 2, [6, 2, 5], 1}, {2, 3, 4, 2, 6, [2, 5, 1]}。
1  | public ArrayList<Integer> maxInWindows(int[] num, int size) {  | 
请设计一个函数,用来判断在一个矩阵中是否存在一条包含某字符串所有字符的路径。路径可以从矩阵中的任意一个格子开始,每一步可以在矩阵中向左,向右,向上,向下移动一个格子。如果一条路径经过了矩阵中的某一个格子,则该路径不能再进入该格子。 例如 [[a, b, c, e], [s, f, c, s], [a, d, e, e]] 矩阵中包含一条字符串 “bcced” 的路径,但是矩阵中不包含 “abcb” 路径,因为字符串的第一个字符b占据了矩阵中的第一行第二个格子之后,路径不能再次进入该格子。
1  | public boolean hasPath(char[] matrix, int rows, int cols, char[] str) {  | 
地上有一个 m 行和 n 列的方格。一个机器人从坐标 0, 0 的格子开始移动,每一次只能向左,右,上,下四个方向移动一格,但是不能进入行坐标和列坐标的数位之和大于 k 的格子。 例如,当 k 为 18 时,机器人能够进入方格(35, 37),因为 3 + 5 + 3 + 7 = 18。但是,它不能进入方格(35, 38),因为 3 + 5 + 3 + 8 = 19。请问该机器人能够达到多少个格子?
1  | public int movingCount(int threshold, int rows, int cols) {  |