求助:6 pin不够怎么破# Hardware - 计算机硬件
m*g
1 楼
这个算法里生成的是 bst
12
/\
11 34
/\
22 45
/ \
43 67
/\
56 89
\
98
为啥不是:
12
/\
11 34
\ \
22 45
/ \
43 67
/\
56 89
\
98
bst的生成是先满足右子树么?
public static void main(String args[]) {
BinaryTreeTest b = new BinaryTreeTest();
int data[] = { 12, 11, 34, 45, 67, 89, 56, 43, 22, 98 };
BinaryTreeTest.BinaryTree root= b.new BinaryTree( data[0] );
System.out.print( "tree:" );
for (int i = 1; i < data.length; i++) {
root.insertTree( root, data[i] );
}
}
class BinaryTree {
int data;
BinaryTree leftpoiter;
BinaryTree rightpoiter;
BinaryTree(int data) {
this.data = data;
leftpoiter = null;
rightpoiter = null;
}
public void insertTree(BinaryTree root, int data) {
if (data >= root.data) {
if (root.rightpoiter == null) {
root.rightpoiter = new BinaryTree( data );
} else {
insertTree( root.rightpoiter, data );
}
} else {
if (root.leftpoiter == null) {
root.leftpoiter = new BinaryTree( data );
} else {
insertTree( root.leftpoiter, data );
}
}
}
}
12
/\
11 34
/\
22 45
/ \
43 67
/\
56 89
\
98
为啥不是:
12
/\
11 34
\ \
22 45
/ \
43 67
/\
56 89
\
98
bst的生成是先满足右子树么?
public static void main(String args[]) {
BinaryTreeTest b = new BinaryTreeTest();
int data[] = { 12, 11, 34, 45, 67, 89, 56, 43, 22, 98 };
BinaryTreeTest.BinaryTree root= b.new BinaryTree( data[0] );
System.out.print( "tree:" );
for (int i = 1; i < data.length; i++) {
root.insertTree( root, data[i] );
}
}
class BinaryTree {
int data;
BinaryTree leftpoiter;
BinaryTree rightpoiter;
BinaryTree(int data) {
this.data = data;
leftpoiter = null;
rightpoiter = null;
}
public void insertTree(BinaryTree root, int data) {
if (data >= root.data) {
if (root.rightpoiter == null) {
root.rightpoiter = new BinaryTree( data );
} else {
insertTree( root.rightpoiter, data );
}
} else {
if (root.leftpoiter == null) {
root.leftpoiter = new BinaryTree( data );
} else {
insertTree( root.leftpoiter, data );
}
}
}
}