1.二叉树的镜像
链接:二叉树的镜像__牛客网
来源:牛客网
操作给定的二叉树,将其变换为源二叉树的镜像。
数据范围:二叉树的节点数 0≤n≤10000 \le n \le 10000≤n≤1000 , 二叉树每个节点的值 0≤val≤10000\le val \le 1000 0≤val≤1000
要求: 空间复杂度 O(n)O(n)O(n) 。本题也有原地操作,即空间复杂度 O(1)O(1)O(1) 的解法,时间复杂度 O(n)O(n)O(n)
public class Solution {
public TreeNode Mirror (TreeNode pRoot) {
if(pRoot == null){
return pRoot;
}
if(pRoot.left == null && pRoot.right == null){
return pRoot;
}
//交换左右子树
TreeNode tmp = pRoot.left;
pRoot.left = pRoot.right;
pRoot.right = tmp;
//再通过递归交换左右子树的子树
Mirror(pRoot.left);
Mirror(pRoot.right);
return pRoot;
}
}
2.杨辉三角的变形
以上三角形的数阵,第一行只有一个数1,以下每行的每个数,是恰好是它上面的数、左上角数和右上角的数,3个数之和(如果不存在某个数,认为该数就是0)。
求第n行第一个偶数出现的位置。如果没有偶数,则输出-1。例如输入3,则输出2,输入4则输出3,输入2则输出-1。
数据范围: 1 \le n \le 10^9 \1≤n≤109
输入描述:
输入一个int整数
输出描述:
输出返回的int值
示例1
输入:
4输出:
3
import java.util.*;
public class Main{
public static void main(String[] args){
Scanner sca = new Scanner(System.in);
while(sca.hasNext()){
int n = sca.nextInt();
if(n <= 2){
System.out.println("-1");
}else if(n % 2 == 1){
System.out.println("2");
}else if(n % 4 == 0){
System.out.println("3");
}else{
System.out.println("4");
}
}
}
}