Você está aqui: Java ::: Desafios e Lista de Exercícios Resolvidos ::: Estruturas de Dados - Árvores Binárias e Árvores Binárias de Busca |
Como criar uma árvore binária de busca em Java a partir dos elementos de um vetor de inteiros - Desafio de Programação Resolvido em JavaQuantidade de visualizações: 722 vezes |
Pergunta/Tarefa: Escreva um programa Java que declara, constrói e inicializa o seguinte vetor de inteiros: // vamos declarar um vetor de 10 inteiros // sem repetição int valores[] = {5, 1, 19, 7, 25, 8, 3, 40, 2, 6}; Após a inserção dos elementos do vetor na árvore binária de busca, mostre todos os nós da árvore usando o percurso "em ordem". O percurso em ordem é usado quando queremos exibir os valores dos nós da árvore binária de busca em ordem ascendente. Neste tipo de percurso nós visitamos primeiramente a sub-árvore da esquerda, então o nó atual e finalmente a sub-árvore à direita do nó atual. É importante notar que esta travessia é feita por meio de um método recursivo. Sua saída deve ser parecida com: Valores do array: [5, 1, 19, 7, 25, 8, 3, 40, 2, 6] Valores na árvores binária: 1 2 3 5 6 7 8 19 25 40 Veja a resolução comentada deste exercício usando Java: package estudos; import java.util.Arrays; // classe interna para representar os nós da // árvore binária class No { int valor; // valor armazenado no nó No esquerdo; // filho esquerdo No direito; // filho direito // construtor do nó public No(int valor){ this.valor = valor; this.esquerdo = null; this.direito = null; } } public class Estudos { // referência para a raiz da árvore static No raiz; public static void main(String args[]){ // vamos declarar um vetor de 10 inteiros // sem repetição int valores[] = {5, 1, 19, 7, 25, 8, 3, 40, 2, 6}; // vamos mostrar os valores do vetor System.out.println("Valores do array: " + Arrays.toString(valores)); // vamos percorrer os valores do vetor e adicioná-los // à arvore binária for (int i = 0; i < valores.length; i++) { inserir(valores[i]); } // agora vamos exibir os valores já inseridos na // árvore binária usando o percurso "Em Ordem", que // devolve os nós da árvore ordenados em ordem // crescente System.out.print("Valores na árvores binária: "); em_ordem(); System.out.println(); } // função usada para inserir um novo nó na árvore // retorna true se o nó for inserido com sucesso e false // se o elemento não puder ser inserido (no caso // de já existir um elemento igual) public static boolean inserir(int valor){ // a árvore ainda está vazia? if(raiz == null){ // vamos criar o primeiro nó e definí-lo como a // raiz da árvore raiz = new No(valor); // cria um novo nó ...... |
![]() |
Java ::: Desafios e Lista de Exercícios Resolvidos ::: Laços de Repetição |
Exercícios Resolvidos de Java - Um laço for que pede que o usuário informe 10 valores inteiros e mostra a quantidade de valores pares informadosQuantidade de visualizações: 10685 vezes |
Pergunta/Tarefa: Escreva um programa Java console que usa o laço for para solicitar que o usuário digite 10 valores inteiros. Em seguida seu programa deverá contar quantos valores pares foram informados. Dica: Use um objeto da classe Scanner para obter a entrada do usuário. Resposta/Solução: A resolução deste exercício envolve a criação de uma variável contador, do tipo int, e que deverá ser inicializada com o valor 0. Veja: int contador = 0; // guardará a quantidade de valores pares lidos public static void main(String[] args){ // para este exercício você deverá importar a classe // Scanner. Ela está no pacote java.util.*; // vamos construir um objeto da classe Scanner para ler a // entrada do usuário Scanner entrada = new Scanner(System.in); int valor; // guarda o valor lido int contador = 0; // guardará a quantidade de valores pares lidos // vamos pedir ao usuário que informe 10 valores inteiros ...... |
Java ::: Fundamentos da Linguagem ::: Tipos de Dados |
Como usar o tipo de dados char da linguagem JavaQuantidade de visualizações: 25301 vezes |
O tipo de dados char é usado para representar um único caractere. Veja:public class Estudos{ public static void main(String args[]){ char letra1 = 'A'; char letra2 = 'B'; ...... Observe que um literal string deve estar entre aspas duplas, enquanto que um literal do tipo caractere deve estar entre aspas simples. Desta forma, "H" é uma string e 'H' é um caractere. O tipo char é integral mas sem sinal. A faixa de uma variável deste tipo vai de 0 à 65536. Os caracteres em Java são codificados em Unicode, que é um codificação de 16 bits capaz de representar uma larga faixa de caracteres internacionais. Se os 9 bits mais significantes de um char forem todos 0, então a codificação será a mesma que o ASCII de 7 bits. É possível atribuir literais inteiros à uma variável do tipo char. Veja: public class Estudos{ public static void main(String args[]){ char letra = 98; System.out.println("A letra é: " ...... Este código exibirá o caractere 'b'. Veja um exemplo no qual imprimimos todas as letras do alfabeto minúsculo: public class Estudos{ public static void main(String args[]){ for(char i = 97; i <= 122; i++){ ...... O tipo char pode ser convertido (sem a necessidade de cast) para os seguintes tipos: char -> int -> long -> float -> double ...... Não é possível converter um char em um short ou byte. Caso isso seja realmente necessário, temos que fazer uma coerção (cast). Veja: public class Estudos{ public static void main(String args[]){ char letra = 57; ...... É fácil entender porque um char não pode ser convertido implicitamente em um byte. Um char possui 16 bits enquanto um byte possui apenas 8 bits. Mas, um short possui 16 bits. Assim, o que impede a conversão implicita de um char para um short? É simples. Como o tipo short possui sinal (aceita valores negativos) e o tipo char é sem sinal, o resultado é que o tipo short possui um bit a menos (reservado para o sinal) e portanto, não pode acomodar os 16 bits do tipo char. |
Java ::: Dicas & Truques ::: Geometria, Trigonometria e Figuras Geométricas |
Como calcular o ponto médio entre dois pontos no plano usando Java - Geometria com JavaQuantidade de visualizações: 3032 vezes |
Nesta dica mostrarei como é possível usar um trecho de código Java para obter o ponto médio entre dois pontos quaisquer no plano, ou seja, no R2. Em mais dicas dessa seção você aprenderá como isso pode ser feito no R3 (espaço) Comece analisando a figura abaixo, na qual temos dois pontos A e B, com suas coordenadas correspondentes, e o ponto médio M: ![]() Assim, dados dois pontos A = (2, 9) e B = (10, 2) no plano cartesiano R2, as coordenadas x e y do ponto médio são calculadas por meio da seguinte fórmula: \[x = \frac{x_1 + x_2}{2}\] \[y = \frac{y_1 + y_2}{2}\] Colocando na fórmula os valores que já temos: \[x = \frac{2 + 10}{2} = \frac{12}{2} = 6 \] \[y = \frac{9 + 2}{2} = \frac{11}{2} = 5.5 \] Assim, as coordenadas do ponto médio será (x = 6, y = 5.5). E agora veja o código Java completo para calcular as coordenadas do ponto médio a partir de dois pontos no plano cartesiano (plano 2D ou R2): package arquivodecodigos; import java.util.Scanner; public class Estudos{ public static void main(String[] args){ Scanner entrada = new Scanner(System.in); // x e y do primeiro ponto System.out.print("Coordenada x do primeiro ponto: "); float x1 = Float.parseFloat(entrada.nextLine()); System.out.print("Coordenada y do primeiro ponto: "); float y1 = Float.parseFloat(entrada.nextLine()); // x e y do segundo ponto System.out.print("Coordenada x do segundo ponto: "); ...... Ao executarmos este código Java nós teremos o seguinte resultado: Coordenada x do primeiro ponto: 2 Coordenada y do primeiro ponto: 9 Coordenada x do segundo ponto: 10 Coordenada y do segundo ponto: 2 As coordenadas do ponto médio são: (x = 6.0, y = 5.5) |
Desafios, Exercícios e Algoritmos Resolvidos de Java |
Veja mais Dicas e truques de Java |
Dicas e truques de outras linguagens |
E-Books em PDF |
||||
|
||||
|
||||
Linguagens Mais Populares |
||||
1º lugar: Java |