| ||||||||||
| Online Judge | Problem Set | Authors | Online Contests | User | ||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest | |||||||||
Re:为什么总是WA?(二叉排序树)In Reply To:为什么总是WA?(二叉排序树) Posted by:llx2192716 at 2009-11-15 13:39:23 兄弟啊,我跟你一样杯具!!!也是二叉排序树,一天到晚的WA
import java.util.*;
public class Main_Tree {
private static boolean outputed = false;
static class PN {
private int s = 0;
private int v = 0;
private PN left = null;
private PN right = null;
public PN(String fn) {
s = 1;
v = parseString2Int(fn);
}
public void increase() {
s++;
}
public String toString() {
int prefix = v / 10000;
int suffix = v % 10000;
return (prefix==0?"000":prefix) + "-" + (suffix==0?"0000":suffix) + " " + s;
}
public void insert(PN pn) {
if(pn == null) return;
if(this.v > pn.v) {
if(this.left == null) this.left = pn;
else this.left.insert(pn);
} else if(this.v == pn.v) {
this.increase();
} else {
if(this.right == null) this.right = pn;
else this.right.insert(pn);
}
}
}
public static void main(String[] args) {
Scanner cin = new Scanner(System.in);
int n = cin.nextInt();
String pnumber = null;
PN root = null;
while(n > 0) {
cin.nextLine();
pnumber = cin.next();
PN pn = new PN(pnumber);
if(root == null) root = pn;
else root.insert(pn);
n--;
}
inOrderTraverse(root);
if(!outputed) System.out.println("No duplicates.");
}
private static int parseString2Int(String pn) {
char [] pna = pn.toCharArray();
int v = 0;
int l = pna.length;
char ch;
for(int i = 0; i < l; i++) {
ch = pna[i];
if(ch == '-') continue;
else {
v = v * 10 + parseChar2Int(ch);
}
}
return v;
}
private static int parseChar2Int(char ch) {
switch(ch) {
case 'A' : case 'B' : case 'C' : case '2' : return 2;
case 'D' : case 'E' : case 'F' : case '3' : return 3;
case 'G' : case 'H' : case 'I' : case '4' : return 4;
case 'J' : case 'K' : case 'L' : case '5' : return 5;
case 'M' : case 'N' : case 'O' : case '6' : return 6;
case 'P' : case 'R' : case 'S' : case '7' : return 7;
case 'T' : case 'U' : case 'V' : case '8' : return 8;
case 'W' : case 'X' : case 'Y' : case '9' : return 9;
case '1' : return 1;
case '0' : return 0;
default : return -1;
}
}
private static void inOrderTraverse(PN root) {
if(root == null) return;
inOrderTraverse(root.left);
if(root.s > 1) {System.out.println(root);outputed = true;}
inOrderTraverse(root.right);
}
}
Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator