1.二元树的深度。
题目:输入一棵二元树的根结点,求该树的深度。
从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。
例如:输入二元树:
10
/ \
6 14
/ / \
4 12 16
输出该树的深度3。
二元树的结点定义如下:
struct SBinaryTreeNode // a node of the binary tree
{
int m_nValue; // value of node
SBinaryTreeNode *m_pLeft; // left child of node
SBinaryTreeNode *m_pRight; //right child of node
};
分析:这道题本质上还是考查二元树的遍历。
package com.jiale.test2;
public class Test7 {
public static void main(String[] args) {
// TODO自动生成的方法存根
BinaryTree bt = new BinaryTree();
int depth = treeDepth(bt.root);
System.out.println(depth);
}
public static int treeDepth(BinaryTreeNode root){
if (root == null) {
return -1;
}else if (root.m_pLeft != null && root.m_pRight == null) {
return treeDepth(root.m_pLeft)+1;
}else if (root.m_pLeft == null && root.m_pRight != null) {
return treeDepth(root.m_pRight)+1;
}else if (root.m_pLeft == null && root.m_pRight == null) {
return 1;
}else {
return (treeDepth(root.m_pLeft)+1) >= (treeDepth(root.m_pRight)+1) ? (treeDepth(root.m_pLeft)+1) : (treeDepth(root.m_pRight)+1);
}
}
}
class BinaryTree{
BinaryTreeNode root;
public BinaryTree() {
root = new BinaryTreeNode(10);
root.m_pLeft = new BinaryTreeNode(6);
root.m_pLeft.m_pLeft = new BinaryTreeNode(4);
root.m_pLeft.m_pLeft.m_pRight = newBinaryTreeNode(45);
root.m_pRight = newBinaryTreeNode(14);
root.m_pRight.m_pLeft = newBinaryTreeNode(12);
root.m_pRight.m_pRight = newBinaryTreeNode(16);
}
}
class BinaryTreeNode{
int m_nValue;
BinaryTreeNode m_pLeft;
BinaryTreeNode m_pRight;
public BinaryTreeNode() {}
public BinaryTreeNode(int m_nValue) {
this.m_nValue = m_nValue;
}
}
运行结果:
4
2、n个人(第一个人序号为1,第二个为2…第三个人为n)围成一圈从第一个人开始从1到3一次循环报数,报到3的人出列,下一个人开始从1重新开始报数,求最后留下的人的序号。(20分)
举例:5个人围成一圈,一次编号为一,二,三,四,五。从一号开始报数,一号报1,二号报2,三号报3,三号出列。圈中剩一,二,四,五,四号从1重新开始报数,四号报1,五号报2,一号报3,一号出列,以此类推。
package com.jiale.test2;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Scanner;
public class Test4 {
public static void main(String[] args) {
System.out.println("请输入n:");
Scanner s = new Scanner(System.in);
int n = s.nextInt();
s.close();
List<Integer> index = new ArrayList<>();
for (int i = 1; i <= n; i++) {
index.add(i);
}
int temp = 0;
while (index.size() >= 3) {
for (int i = 0; i < 3; i++) {
if (i == 2) {
if (temp > index.size()-1) {
temp -= index.size();
}
index.remove(temp--);
}
temp++;
}
}
System.out.println("游戏结束:(留下的序列为)");
Iterator<Integer> iter = index.iterator();
while (iter.hasNext()) {
System.out.print((Integer) iter.next()+" ");
}
}
}
运行结果:
请输入n:
7
游戏结束:(留下的序列为)
1 4
请输入n:
5
游戏结束:(留下的序列为)
2 4
3.题目:在一个字符串中找到第一个只出现一次的字符。如输入abaccdeff,则输出b。
package com.jiale.test2;
import java.util.Scanner;
public class Test5 {
public static void main(String[] args) {
// TODO自动生成的方法存根
System.out.println("请输入一个字符串:");
Scanner s = new Scanner(System.in);
String str = s.next();
s.close();
findLoneChar(str);
}
public static void findLoneChar(String str){
char[] c = str.toCharArray();
for (int i = 0; i < c.length; i++) {
boolean judge = false;
for (int j = 0; j < c.length; j++) {
if ((c[i] == c[j]) && (i != j)) {
judge = true;
}
}
if (!judge) {
System.out.print(c[i]+" ");
}
}
}
}
运行结果:
请输入一个字符串:
abaccdeff
b d e
分析:这道题是2006年google的一道笔试题。
4. 设计4个线程,其中两个线程每次对j增加1,另外两个线程对j每次减少1。写出程序。
package com.jiale.test2;
public class Test6 {
public static void main(String[] args) {
// TODO自动生成的方法存根
myThread1 t1 = new myThread1();
myThread1 t2 = new myThread1();
myThread2 t3 = new myThread2();
myThread2 t4 = new myThread2();
t1.start();
t2.start();
t3.start();
t4.start();
}
}
class myThread1 extends Thread{
int j = 0;
public void run() {
for (int i = 0; i < 100; i++) {
System.out.println(Thread.currentThread().getName()+":i="+(++j));
}
}
}
class myThread2 extends Thread{
int j = 100;
public void run() {
for (int i = 0; i < 100; i++) {
System.out.println(Thread.currentThread().getName()+":i="+(--j));
}
}
}
运行结果:
Thread-0:i=1
Thread-2:i=99
Thread-3:i=99
Thread-1:i=1
Thread-3:i=98
Thread-2:i=98
Thread-0:i=2
Thread-2:i=97
Thread-2:i=96
Thread-3:i=97
Thread-3:i=96
Thread-3:i=95
Thread-3:i=94
Thread-3:i=93
Thread-3:i=92
Thread-3:i=91
Thread-3:i=90
Thread-3:i=89
Thread-3:i=88
Thread-3:i=87
Thread-3:i=86
Thread-3:i=85
Thread-3:i=84
Thread-3:i=83
Thread-1:i=2
Thread-1:i=3
Thread-1:i=4
Thread-3:i=82
Thread-3:i=81
Thread-3:i=80
Thread-3:i=79
Thread-3:i=78
Thread-3:i=77
Thread-3:i=76
Thread-3:i=75
Thread-3:i=74
Thread-3:i=73
Thread-3:i=72
Thread-3:i=71
Thread-3:i=70
Thread-3:i=69
Thread-3:i=68
Thread-2:i=95
Thread-0:i=3
Thread-2:i=94
Thread-3:i=67
Thread-1:i=5
Thread-3:i=66
Thread-2:i=93
Thread-2:i=92
Thread-0:i=4
Thread-2:i=91
Thread-3:i=65
Thread-1:i=6
Thread-3:i=64
Thread-2:i=90
Thread-0:i=5
Thread-2:i=89
Thread-3:i=63
Thread-1:i=7
Thread-3:i=62
Thread-2:i=88
Thread-0:i=6
Thread-2:i=87
Thread-3:i=61
Thread-1:i=8
Thread-3:i=60
Thread-2:i=86
Thread-0:i=7
Thread-2:i=85
Thread-3:i=59
Thread-1:i=9
Thread-3:i=58
Thread-2:i=84
Thread-0:i=8
Thread-2:i=83
Thread-3:i=57
Thread-1:i=10
Thread-3:i=56
Thread-2:i=82
Thread-0:i=9
Thread-2:i=81
Thread-3:i=55
Thread-1:i=11
Thread-3:i=54
Thread-2:i=80
Thread-0:i=10
Thread-2:i=79
Thread-3:i=53
Thread-1:i=12
Thread-3:i=52
Thread-2:i=78
Thread-0:i=11
Thread-2:i=77
Thread-3:i=51
Thread-1:i=13
Thread-3:i=50
Thread-2:i=76
Thread-2:i=75
Thread-2:i=74
Thread-2:i=73
Thread-2:i=72
Thread-2:i=71
Thread-2:i=70
Thread-2:i=69
Thread-2:i=68
Thread-2:i=67
Thread-2:i=66
Thread-2:i=65
Thread-2:i=64
Thread-2:i=63
Thread-2:i=62
Thread-2:i=61
Thread-2:i=60
Thread-2:i=59
Thread-2:i=58
Thread-2:i=57
Thread-2:i=56
Thread-2:i=55
Thread-2:i=54
Thread-2:i=53
Thread-2:i=52
Thread-2:i=51
Thread-0:i=12
Thread-0:i=13
Thread-0:i=14
Thread-0:i=15
Thread-0:i=16
Thread-0:i=17
Thread-0:i=18
Thread-0:i=19
Thread-0:i=20
Thread-0:i=21
Thread-0:i=22
Thread-0:i=23
Thread-0:i=24
Thread-0:i=25
Thread-0:i=26
Thread-0:i=27
Thread-0:i=28
Thread-0:i=29
Thread-0:i=30
Thread-0:i=31
Thread-0:i=32
Thread-0:i=33
Thread-0:i=34
Thread-0:i=35
Thread-0:i=36
Thread-0:i=37
Thread-2:i=50
Thread-3:i=49
Thread-1:i=14
Thread-3:i=48
Thread-2:i=49
Thread-0:i=38
Thread-2:i=48
Thread-3:i=47
Thread-1:i=15
Thread-3:i=46
Thread-2:i=47
Thread-0:i=39
Thread-2:i=46
Thread-3:i=45
Thread-1:i=16
Thread-3:i=44
Thread-2:i=45
Thread-0:i=40
Thread-2:i=44
Thread-3:i=43
Thread-1:i=17
Thread-3:i=42
Thread-2:i=43
Thread-0:i=41
Thread-2:i=42
Thread-3:i=41
Thread-1:i=18
Thread-3:i=40
Thread-2:i=41
Thread-0:i=42
Thread-2:i=40
Thread-3:i=39
Thread-1:i=19
Thread-3:i=38
Thread-2:i=39
Thread-0:i=43
Thread-2:i=38
Thread-3:i=37
Thread-1:i=20
Thread-3:i=36
Thread-2:i=37
Thread-0:i=44
Thread-2:i=36
Thread-3:i=35
Thread-1:i=21
Thread-3:i=34
Thread-2:i=35
Thread-0:i=45
Thread-2:i=34
Thread-3:i=33
Thread-1:i=22
Thread-3:i=32
Thread-2:i=33
Thread-0:i=46
Thread-2:i=32
Thread-3:i=31
Thread-1:i=23
Thread-3:i=30
Thread-2:i=31
Thread-0:i=47
Thread-2:i=30
Thread-3:i=29
Thread-1:i=24
Thread-3:i=28
Thread-2:i=29
Thread-0:i=48
Thread-2:i=28
Thread-3:i=27
Thread-1:i=25
Thread-3:i=26
Thread-2:i=27
Thread-0:i=49
Thread-2:i=26
Thread-3:i=25
Thread-1:i=26
Thread-3:i=24
Thread-2:i=25
Thread-0:i=50
Thread-2:i=24
Thread-3:i=23
Thread-1:i=27
Thread-3:i=22
Thread-2:i=23
Thread-0:i=51
Thread-2:i=22
Thread-3:i=21
Thread-1:i=28
Thread-3:i=20
Thread-2:i=21
Thread-0:i=52
Thread-2:i=20
Thread-3:i=19
Thread-1:i=29
Thread-3:i=18
Thread-2:i=19
Thread-0:i=53
Thread-2:i=18
Thread-3:i=17
Thread-1:i=30
Thread-3:i=16
Thread-2:i=17
Thread-0:i=54
Thread-2:i=16
Thread-3:i=15
Thread-1:i=31
Thread-3:i=14
Thread-2:i=15
Thread-0:i=55
Thread-2:i=14
Thread-3:i=13
Thread-1:i=32
Thread-3:i=12
Thread-2:i=13
Thread-0:i=56
Thread-2:i=12
Thread-3:i=11
Thread-1:i=33
Thread-3:i=10
Thread-2:i=11
Thread-0:i=57
Thread-2:i=10
Thread-3:i=9
Thread-1:i=34
Thread-3:i=8
Thread-2:i=9
Thread-0:i=58
Thread-2:i=8
Thread-2:i=7
Thread-2:i=6
Thread-2:i=5
Thread-2:i=4
Thread-2:i=3
Thread-3:i=7
Thread-2:i=2
Thread-3:i=6
Thread-3:i=5
Thread-3:i=4
Thread-3:i=3
Thread-3:i=2
Thread-3:i=1
Thread-3:i=0
Thread-1:i=35
Thread-1:i=36
Thread-1:i=37
Thread-2:i=1
Thread-0:i=59
Thread-2:i=0
Thread-1:i=38
Thread-1:i=39
Thread-1:i=40
Thread-0:i=60
Thread-1:i=41
Thread-0:i=61
Thread-1:i=42
Thread-0:i=62
Thread-1:i=43
Thread-0:i=63
Thread-1:i=44
Thread-0:i=64
Thread-1:i=45
Thread-0:i=65
Thread-1:i=46
Thread-0:i=66
Thread-1:i=47
Thread-0:i=67
Thread-1:i=48
Thread-0:i=68
Thread-1:i=49
Thread-0:i=69
Thread-1:i=50
Thread-0:i=70
Thread-1:i=51
Thread-0:i=71
Thread-1:i=52
Thread-0:i=72
Thread-1:i=53
Thread-0:i=73
Thread-1:i=54
Thread-0:i=74
Thread-1:i=55
Thread-0:i=75
Thread-1:i=56
Thread-0:i=76
Thread-1:i=57
Thread-0:i=77
Thread-1:i=58
Thread-0:i=78
Thread-1:i=59
Thread-0:i=79
Thread-1:i=60
Thread-0:i=80
Thread-1:i=61
Thread-0:i=81
Thread-1:i=62
Thread-0:i=82
Thread-1:i=63
Thread-0:i=83
Thread-1:i=64
Thread-0:i=84
Thread-1:i=65
Thread-0:i=85
Thread-1:i=66
Thread-0:i=86
Thread-1:i=67
Thread-0:i=87
Thread-1:i=68
Thread-0:i=88
Thread-1:i=69
Thread-0:i=89
Thread-1:i=70
Thread-0:i=90
Thread-1:i=71
Thread-0:i=91
Thread-1:i=72
Thread-0:i=92
Thread-1:i=73
Thread-0:i=93
Thread-1:i=74
Thread-0:i=94
Thread-1:i=75
Thread-0:i=95
Thread-1:i=76
Thread-0:i=96
Thread-1:i=77
Thread-0:i=97
Thread-1:i=78
Thread-0:i=98
Thread-1:i=79
Thread-0:i=99
Thread-1:i=80
Thread-0:i=100
Thread-1:i=81
Thread-1:i=82
Thread-1:i=83
Thread-1:i=84
Thread-1:i=85
Thread-1:i=86
Thread-1:i=87
Thread-1:i=88
Thread-1:i=89
Thread-1:i=90
Thread-1:i=91
Thread-1:i=92
Thread-1:i=93
Thread-1:i=94
Thread-1:i=95
Thread-1:i=96
Thread-1:i=97
Thread-1:i=98
Thread-1:i=99
Thread-1:i=100