a lot of programmers and my readers have been asking me to share some binary tree-based coding interview questions, just like I have done for the array, linked list, string, software design, patterns, hash table, and data structure in general. Esta tarefa estava realmente pendente por algum tempo e ficou preso para mim tentando encontrar a solução para cada e cada pergunta que eu poderia ter coletado. Então, eu decidi publicar a lista de perguntas de entrevistas em árvore binária agora e possivelmente publicar a solução como um artigo separado mais tarde. Isto é como criar uma interface e fornecer implementação mais tarde para que você não bloqueie outras pessoas que são dependentes de sua interface (na verdade, esta é uma vantagem de usar a interface em Java ou qualquer outra linguagem de programação).
o que é a estrutura binária de dados da árvore?
de qualquer maneira, voltando para uma árvore binária, eu gostaria de reiterar alguns pontos úteis sobre a árvore da estrutura de dados em geral, o que vai ajudá-lo a resolver essas questões sobre o seu próprio:
1) Uma árvore é a estrutura de dados hierárquica, ao contrário de uma matriz ou lista ligada que são lineares. Isto significa que você pode armazenar informações hierárquicas usando uma estrutura de dados de árvore, como uma estrutura de organização, árvore genealógica, etc.
2) uma árvore tem nós e crianças. O primeiro nó é chamado de raiz.
3) Se você quiser visualizar, a estrutura de dados da árvore é como uma árvore invertida no mundo real. Quero dizer, quando você vê árvores ao seu redor, suas raízes estão no fundo, mas quando você desenha uma estrutura de dados de árvore na programação ou ciência da computação, sua raiz está no topo.
4) uma árvore binária é uma árvore especial, onde você pode ter no máximo duas crianças. Isto significa que um nó pode ou não ter nenhuma criança, uma criança ou duas crianças. Não podem ter três filhos ou mais.
5) Todos os nós que não têm filhos são conhecidos como um nó folha.
6) Árvore de busca binária é um tipo especial de árvore binária onde os valores dos subtrees da esquerda são menores ou iguais a raiz e os valores dos nós nos subtrees da direita são maiores ou iguais a raiz. Isso fornece uma estrutura de ordenação para uma árvore de busca binária, o que torna a busca muito rápida.
Você também pode verificar estruturas de dados e algoritmos: mergulho profundo usando o curso Java em Udemy para saber mais sobre árvores de busca Binárias. É um dos melhores cursos para atualizar sua estrutura de dados e habilidades de algoritmos.
7) A árvore de busca binária está intimamente associada a uma busca binária que funciona com o princípio de reduzir o tamanho da entrada para metade após cada iteração. Isto torna a pesquisa muito rápida e você pode encontrar qualquer elemento na árvore de busca binária no tempo O(logN), mas, apenas se a árvore é equilibrada.
8) Existem duas maneiras de atravessar uma estrutura de dados de árvore, profundidade-primeiro, ou nível primeiro. Em profundidade-primeiro, você vai para baixo até que não há mais nó para visitar e, em seguida, você volta para visitar nós no mesmo nível.
enquanto na ordem de nível traversal, você visita todos os nós no mesmo nível antes de passar para o próximo nível. Há também pré-ordem, pós-ordem, e em ordem traversal para binário que é usado para atravessar nós de uma árvore binária. Na ordem traversal é especial porque visita todos os nós em ordem ordenada.
9) uma árvore binária balanceada é como ter um número igual de nós em cada subárvore se você tiver todos os nós na única subárvore esquerda ou direita que a sua árvore binária ficará desequilibrada e irá agir como uma lista ligada como mostrado no diagrama abaixo:
10) Uma árvore de busca binária desequilibrada ou não balanceada age como uma lista vinculada onde uma pesquisa levará O(n) Tempo em oposição ao(logN) tempo em uma árvore de busca binária balanceada.
estes são alguns dos pontos importantes que cada programador deve saber sobre a estrutura de dados de árvore binária. Ele irá ajudá-lo a resolver problemas de codificação baseados em árvores. Se você quiser aprender mais sobre a árvore binária e outras estruturas de dados, eu sugiro que você se junte a uma boa estrutura de dados e curso de algoritmo como estruturas de dados e algoritmos: mergulho profundo usando Java em Udemy para escovar seus fundamentos.
40+ perguntas de entrevistas em árvore binária para programadores Java
sem perder mais tempo, aqui está Minha Lista de problemas de codificação baseados em árvore binária e árvore binária de busca (BST) de programação de entrevistas de trabalho. Eu tenho ligado a solução sempre que é possível, mas se não houver link, você também pode encontrar uma solução apenas fazendo uma pesquisa no Google. São questões muito populares e muitas pessoas já as resolveram.
para obter o máximo desta lista, tente resolver o problema antes de olhar para a solução só então a sua mente vai funcionar e você vai enfrentar desafios e consolidar a sua compreensão. Se você olhar para a solução imediatamente, você só vai aprender 10%, mas se você tentar você vai aprender 80 a 90% dos conceitos e truques por trás de cada pergunta.
1) Como você encontra o menor ancestral comum de uma árvore binária em Java? (solução)
2) Como imprimir a vista esquerda de uma árvore binária em Java? (solution)
3) Write a program to construct a tree from Encomender and PreOrder traversal in Java? (solução)
4) Como imprimir nós comuns em duas árvores de busca binárias em Java? (solution)
5) Why binary heap is a better choice over BST for implementing Priority Queue? (resposta)
6) Como verificar se uma dada árvore binária está balanceada ou não? Write a Java method, which accepts a binary tree and returns true if it is balanced or false otherwise. (solution)
7) What are some advantages of a binary search tree over a hashtable data structure? (resposta)
8) Como você verifica se uma dada árvore binária é uma sub-árvore de outra árvore binária? (solução)
você deu duas árvores binárias, e você precisa retornar verdadeiro se uma primeira árvore binária é uma sub-árvore da segunda. Uma sub-árvore da árvore binária BT é uma árvore t consistindo de um nó de BT e todos os seus descendentes. Por exemplo, no caso seguinte, T1 é uma sub-árvore da árvore binária BT
9) como você encontra a distância entre dois nós em uma árvore binária? (solution)
10) How to find the lowest common ancestor in a binary tree in Java? (solution)
11) Write a Java program to check if all leaves of a given binary tree are at the same level? (solution)
12) Como converter uma dada árvore binária para uma lista de ligações duplas em Java? (solution)
13) Write a program to find a depth of a given binary tree in Java? (solução)
14) Qual é a diferença entre árvores de busca binárias e Binárias? (resposta)
15) O que é uma árvore auto-equilibrada? (resposta)
16) O que é a árvore AVL? (resposta)
17) escrever um programa Java para imprimir a passagem pré-ordem de uma árvore de busca binária? Dar uma solução usando iteração e recursão? (solution)
18) Print the post-order traversal of BST? Give Iterative and recursive algorithm (solution)
19) Print the inorder traversal of a BST in Java? Give both Iterative and recursive algorithms (solution)
20) you have given a BST, where two nodes are swapped? Como se recupera o BST original? (solução)
21) como converter uma árvore binária para uma árvore binária de pesquisa em Java? (solution)
22) Find the largest BST subtree of a given binary tree in Java? (solution)
23) Write a Java program to connect nodes at the same level as a binary tree? (solução)
24) O que é uma estrutura de dados Trie? (resposta)
25) Qual é a diferença entre a árvore binária e a Trie? (resposta)
26) Print ancestors of a given node of a binary tree in Java? (solution)
27) Write a Java program to print the level of a given node in a binary tree? (solution)
28) Print common nodes of two given BST in Java? (solution)
29) Give a binary tree, print all root-to-leaf path in Java? (solution)
30) Print Inorder tree traversal without recursion in Java? (solution)
31) Print PreOrder tree traversal without recursion and stack in Java? (solution)
32) Print PostOrder tree traversal without recursion in Java? (solution)
33) Java Program to check if a given binary tree is BST or not? (solution)
34) Write a Java Program to count leaf nodes in a binary tree? (solution)
35) Write a Java program to find the height or depth of a binary tree? (solução)
36) Como você acha se duas árvores binárias dadas são as mesmas? (solution)
Write a method in Java, which will accept two binary trees and return true if they are the same, otherwise return false.
37) Como é que se apaga um dado nó de uma árvore de pesquisa binária em Java? (solution)
38) Write a Java function to add a given node in a binary search tree? (solution)
39) Print a binary tree in vertical order in Java? (solution)
40) What is the Red-Black Tree data structure? (answer)
Answer – Red-Black Tree is a self-balancing Binary Search Tree (BST) where every node has the following properties
a) Every node has a color, either red or black.
b) a raiz da árvore é sempre Negra.
c) não existem dois nós vermelhos adjacentes (um nó vermelho não pode ter um pai vermelho ou filho vermelho).
d) cada caminho da raiz para um nó nulo tem o mesmo número de nós Negros.
você também pode verificar estruturas de dados em Java: Um Curso de atualização de entrevistas sobre Educative para saber mais sobre a estrutura de dados da árvore negra vermelha.
That’s all in this list of top 40 binary trees and binary search tree based coding problems from programming interviews. Embora a solução é dada na linguagem de programação Java, você é bem-vindo para resolver estas questões em qualquer linguagem de programação de sua escolha, como Python, C, C++, JavaScript, Ruby, ou mesmo Swift. Você também pode postar sua solução na seção de comentários para que a comunidade possa rever sua solução e fornecer algum feedback útil.Tudo de bom para a sua entrevista de codificação.
Aperfeiçoamento Profissional
11 Questões Essenciais De Codificação Da Entrevista.
Master the Coding Interview: Data Structures + Algorithms
Grokking the Coding Interview: Padrões para perguntas de codificação
outras perguntas de entrevista de codificação l você pode gostar
- como implementar o algoritmo de ordenação de inserção em Java? (tutorial)
- como aplicar o algoritmo Quicksort em Java? (tutorial)
- como implementar o algoritmo de Bubble sort em Java? (tutorial)
- Difference between Comparison and Non-Comparison based sorting algorithm? (resposta)
- como aplicar o Bucket Sort em Java? (tutorial)
- como implementar algoritmo Quicksort sem recursão? (tutorial)
- como executar um algoritmo de busca binária em Java? (tutorial)
- como encontrar todos os pares em um array cuja soma é igual a k (solução)
- Como remover duplicados de um array em Java? (solution)
- How to find the most significant and smallest number in an array without sorting? (solution)
- How to find duplicates from an unsorted array in Java? (solution)
- How to find one missing number in a tried array? (solution)
- How to find a missing value from an array containing 1 to 100? (solution)
- 50+ Data Structure and Algorithms Problems from Interviews (questions)
- My favorite free courses to learning data Structure in-depth (FreeCodeCamp)
- How to remove an element from an array in Java? (solution)
- How to check if an array contains a particular value? (solução)
- 10 cursos de estrutura de dados e algoritmos gratuitos para programadores (cursos)
- 100 + problemas de codificação da estrutura de dados de entrevistas (perguntas))
Obrigado por ler este artigo. Se você gosta deste artigo, então, por favor, compartilhá-lo com seus amigos e colegas. Se tiver alguma dúvida ou feedback, por favor deixe uma nota.
P. S.-Se você está procurando por alguns cursos de algoritmos gratuitos para melhorar a sua compreensão da estrutura de dados e algoritmos, então você também deve verificar o curso de estruturas de dados fáceis A avançadas em Udemy. É de autoria de um engenheiro de software do Google e especialista em algoritmos, e é completamente livre de custos.