标签:paths int 路径 二叉树 数组 path root 节点 row
解题思路:先判断当前节点是否为空,不为空则加入路径中,若不为空,判断该节点是否为叶子节点,为叶子节点则将路径加入答案,否则继续递归左右子树.
给定一个二叉树,返回所有从根节点到叶子节点的路径。
说明: 叶子节点是指没有子节点的节点。
示例:
输入:
1
/ \
2 3
\
5输出: ["1->2->5", "1->3"]
解释: 所有根节点到叶子节点的路径为: 1->2->5, 1->3
class Solution {
public List<String> binaryTreePaths(TreeNode root) {
LinkedList<String> paths = new LinkedList<>();
paths_ans(root,"",paths);
return paths;
}
public void paths_ans(TreeNode root,String path,LinkedList<String> paths){
if(root != null){
path += Integer.toString(root.val);
if(root.left == null && root.right == null){
paths.add(path);
}else{
path += "->";
paths_ans(root.left,path,paths);
paths_ans(root.right,path,paths);
}
}
}
}
解题思路:首先要找到两个定点,分别是右下角和左上角的点,然后以这两点的坐标为终止条件输出每一圈的元素,终止条件是这两点的对应的横纵坐标.
问题描述
对于一个 n 行 m 列的表格,我们可以使用螺旋的方式给表格依次填上正整数,我们称填好的表格为一个螺旋矩阵。
例如,一个 4 行 5 列的螺旋矩阵如下:
1 2 3 4 5
14 15 16 17 6
13 20 19 18 7
12 11 10 9 8样例输入
4 5
2 2样例输出
15
package Test02;
import java.util.Scanner;
public class Work {
public static void main(String[] args) {
int[][] a = new int[1001][1001];
int n,m;
int c,r;
Scanner reader = new Scanner(System.in);
n = reader.nextInt();
m = reader.nextInt();
c = reader.nextInt();
r = reader.nextInt();
int row = 1, col = 1;
int num = 1;
int n2 = n, m2 = m;
while(row <= n && col <= m){
int x = row, y = col;
while(col <= m)
a[row][col++] = num++;
col--;row++;
while(row <= n)
a[row++][col] = num++;
row--;col--;
while(col >= y)
a[row][col--] = num++;
row--;col++;
while(row > x )
a[row--][col] = num++;
row++;col++;
n--;m--;
}
System.out.println(a[r][c]);
}
}
标签:paths,int,路径,二叉树,数组,path,root,节点,row 来源: https://blog.51cto.com/14472348/2487354
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。