NullPointerExcepcion (ABB)
Publicado por Matias Brusati (1 intervención) el 21/11/2018 01:48:25
tengo la sig implementacion para arboles y me tira NullPointerException
el problema es en el INSERTAR
el problema es en el INSERTAR
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
public class TreeNode<AnyType extends Comparable<AnyType>> {
private AnyType elemento; // elemento del nodo
private TreeNode lefth; // hijo izquierdo
private TreeNode right; // hijo derecho
// constructor del NodoArbol por defecto
public TreeNode(){
elemento = null;
lefth = null;
right = null;
}
// constructor del NodoArbol (cargar raiz)
public TreeNode(AnyType x){
elemento = x;
lefth = null;
right = null;
}
public TreeNode(AnyType theElement, TreeNode<AnyType> lt, TreeNode<AnyType> rt ){
elemento = theElement;
lefth = lt;
right = rt;
}
// Setea la raiz
public void setRoot(AnyType item){
elemento = item;
}
// Devuelve el elemento de la raiz
public AnyType getRoot(){
return ( elemento );
}
// Devuelve hijo izquierdo
public TreeNode getHi(){
return ( lefth );
}
// Setea hijo derecho
public void setHi(TreeNode hijoIzq){
lefth = hijoIzq;
// Devuelve hijo derecho
}
public TreeNode getHd(){
return ( right );
}
// Setea hijo izquierdo
public void setHd(TreeNode hijoDer){
right = hijoDer;
}
public boolean esVacio(){
return ((this.elemento==null) && (this.right==null) && (this.lefth==null) );
}
// Recorrido preorder
public String printPreOrder(){
String abc = "";
abc = abc + getRoot() + ", "; // se imprime la raiz
if (getHi() != null){ // se recorre el hi
abc = abc + getHi().printPreOrder();
}
if (getHd() != null){ // se recorre el hd
abc = abc + getHd().printPreOrder();
}
return abc;
}
// Recorrido posorder
public String printPostOrder(){
String abc = "";
if (getHi() != null){ // se recorre hi
abc = abc + getHi().printPostOrder() + ", ";
}
if (getHd() != null){ // se recorre hd
abc = abc + getHd().printPostOrder() + ", ";
}
abc = abc + getRoot(); // se imprime la raiz
return abc;
}
// Recorrido inorder
public String printInOrder(){
String abc = "";
if (getHi() != null){ // se recorre el hi
abc = abc + getHi().printInOrder() + ", ";
}
abc = abc + getRoot() + ", "; // se imprime la raíz
if (getHd() != null){ // se imprime el hd
abc = abc + getHd().printInOrder() ;
}
return abc;
}
// Recorrido inorder iterativo
public String printInOrderIterativo(){
String abc = "";
while (getRoot()!=null)
abc = abc + getHi().getRoot() + ", "; // se imprime la raíz
return abc;
}
// Devuelve el tamaño del arbol
public int size(){
if (getRoot() == null){
return 0;
}
else{
return ( 1 + getHi().size() + getHd().size() );
}
}
// Devuelve la altura del arbol
public int height(){
if (getRoot() == null){
return 0;
}
else{
return ( 1 + Math.max ( getHi().height(), getHd().height() ) );
}
}
// Dice si el arbol esta lleno
public boolean full(){
if (getRoot() == null){
return true;
}
else{
return ( (getHi().height() == getHd().height()) && (getHi().full()) && (getHd().full()) );
}
}
// Dice si el arbol es vacio
public boolean balanceado(){
if (getRoot() == null){
return true;
}
else{
return ( (Math.abs (getHi().height() - getHd().height())) >= 1 );
}
}
public boolean pertenece(AnyType elem) {
if (getRoot().equals(elem))
return true;
else {
if (elem.compareTo(getRoot())<0)
getHi().pertenece(elem);
else
getHd().pertenece(elem);
}
return false;
}
public void insertar(AnyType elem) /* throws ExcepcionDiccionario */ {
/*if (pertenece(elem))
throw new ExcepcionDiccionario("EL ELEMENTO: "+ elem + " EXISTE");*/
if (esVacio()){
TreeNode<AnyType> nuevo = new TreeNode(elem);
this.elemento=nuevo.elemento;
this.lefth=nuevo.lefth;
this.right=nuevo.right;
}
else {
if (elem.compareTo(getRoot())<0)
getHi().insertar(elem);
if (elem.compareTo(getRoot())>0)
getHd().insertar(elem);
}
}
}
Valora esta pregunta


0