fork(3) download
  1. class Teste {
  2. public static void main(String[] args) {
  3. ArvoreBinaria ab = new ArvoreBinaria();
  4. System.out.println(ab);
  5. ab.inserir(5);
  6. System.out.println(ab);
  7. ab.inserir(10);
  8. System.out.println(ab);
  9. ab.inserir(15);
  10. System.out.println(ab);
  11. ab.inserir(2);
  12. System.out.println(ab);
  13. ab.inserir(4);
  14. System.out.println(ab);
  15. ab.inserir(6);
  16. System.out.println(ab);
  17. ab.inserir(8);
  18. System.out.println(ab);
  19. ab.inserir(20);
  20. System.out.println(ab);
  21. System.out.println(ab.soma());
  22. }
  23. }
  24.  
  25. class ArvoreBinaria {
  26.  
  27. private No raiz;
  28.  
  29. public void inserir(int valor) {
  30. if (raiz == null) {
  31. raiz = new No(valor);
  32. } else {
  33. No novo = new No(valor);
  34. inserir(raiz, novo);
  35. }
  36. }
  37.  
  38. private void inserir(No arvore, No novo) {
  39. if (novo.valor > arvore.valor) {
  40. if (arvore.direito == null) {
  41. arvore.direito = novo;
  42. } else {
  43. inserir(arvore.direito, novo);
  44. }
  45. } else {
  46. if (arvore.esquerdo == null) {
  47. arvore.esquerdo = novo;
  48. } else {
  49. inserir(arvore.esquerdo, novo);
  50. }
  51. }
  52. }
  53.  
  54. public int soma() {
  55. return raiz == null ? 0 : raiz.soma();
  56. }
  57.  
  58. @Override
  59. public String toString() {
  60. return raiz == null ? "*" : raiz.toString();
  61. }
  62.  
  63. private static class No {
  64.  
  65. private int valor;
  66. private No direito;
  67. private No esquerdo;
  68.  
  69. public No(int valor) {
  70. this.valor = valor;
  71. }
  72.  
  73. public int soma() {
  74. return valor
  75. + (direito == null ? 0 : direito.soma())
  76. + (esquerdo == null ? 0 : esquerdo.soma());
  77. }
  78.  
  79. @Override
  80. public String toString() {
  81. return (esquerdo == null ? "*" : "(" + esquerdo + ")")
  82. + valor
  83. + (direito == null ? "*" : "(" + direito + ")");
  84. }
  85. }
  86. }
Success #stdin #stdout 0.06s 2841600KB
stdin
Standard input is empty
stdout
*
*5*
*5(*10*)
*5(*10(*15*))
(*2*)5(*10(*15*))
(*2(*4*))5(*10(*15*))
(*2(*4*))5((*6*)10(*15*))
(*2(*4*))5((*6(*8*))10(*15*))
(*2(*4*))5((*6(*8*))10(*15(*20*)))
70