Qual é a diferença entre profundidade e altura da árvore?


262

Esta é uma pergunta simples da teoria dos algoritmos.
A diferença entre eles é que, em um caso, você conta o número de nós e em outro número de arestas no caminho mais curto entre o nó raiz e o concreto.
Qual e qual?


78
Dica: para evitar confusão entre terminologias: 1. Altura: imagine medir a altura de uma pessoa, fazemos do dedo do pé à cabeça (folha à raiz). 2. Profundidade: imagine medir a profundidade de um mar, fazemos da superfície da terra ao leito oceânico (da raiz à folha).
Yesh

@ Yesh Esta é uma ótima analogia.
Caractere especial

1
Para adicionar à excelente analogia do @Yesh: para alguns nós internos no meio da árvore, é a profundidade de quantos níveis está abaixo do nó raiz e a altura é o nível em que está acima do nó filho mais baixo.
Thomas Nguyen

Respostas:


664

Aprendi que profundidade e altura são propriedades de um :

  • A profundidade de um nó é o número de arestas do nó até o nó raiz da árvore.
    Um nó raiz terá uma profundidade de 0.

  • A altura de um nó é o número de arestas no caminho mais longo do nó para uma folha.
    Um nó folha terá uma altura de 0.

Propriedades de uma árvore :

  • A altura de uma árvore seria a altura do nó raiz
    ou, equivalentemente, a profundidade do nó mais profundo.

  • O diâmetro (ou largura ) de uma árvore é o número de nós no caminho mais longo entre dois nós de folhas. A árvore abaixo tem um diâmetro de 6 nós.

Uma árvore, com altura e profundidade de cada nó


21
+1 estava prestes a adicionar citação com o mesmo conteúdo daqui: en.wikipedia.org/wiki/Tree_%28data_structure%29
Péter Török

2
é max isso significa altura == profundidade
roottraveller

6
@rkm_Hodor: Sim, a altura de uma árvore é sempre igual à profundidade do nó mais profundo.
Daniel AA Pelsmaeker

1
Você poderia citar uma fonte para sua alegação de que o diâmetro de uma árvore conta nós em vez de arestas? Isso entra em conflito com a definição usual do diâmetro de um gráfico (veja, por exemplo, en.wikipedia.org/wiki/Distance_(graph_theory) ) que solicita o caminho mais longo.
Jrandom_hacker 26/11/18

1
@j_random_hacker É uma questão de definição, escolha a mais útil para você. Para passar do número de vértices para o número de arestas, basta subtrair 1. Prefiro contar o número de vértices, pois isso resulta em um gráfico com apenas um nó com largura 1 e um gráfico vazio com largura 0. mathworld. wolfram.com/GraphDiameter.html
Daniel AA Pelsmaeker

44

a altura e a profundidade de uma árvore são iguais ...

mas a altura e a profundidade de um nó não são iguais porque ...

a altura é calculada atravessando o nó especificado para a folha mais profunda possível.

a profundidade é calculada a partir da passagem da raiz para o nó especificado .....


4
"a altura é calculada atravessando a folha para o nó especificado" não está correta, a folha deve ser a mais profunda entre todas as folhas do nó especificado.
MightyWOZ

14

De acordo com Cormen et al. Introdução aos algoritmos (Apêndice B.5.3), a profundidade de um nó X em uma árvore T é definida como o comprimento do caminho simples (número de arestas) do nó raiz de T a X. A altura de um nó Y é o número de arestas no caminho simples descendente mais longo, de Y a uma folha. A altura de uma árvore é definida como a altura do seu nó raiz.

Observe que um caminho simples é um caminho sem vértices repetidos.

A altura de uma árvore é igual à profundidade máxima de uma árvore . A profundidade de um nó e a altura de um nó não são necessariamente iguais. Veja a Figura B.6 da 3ª Edição de Cormen et al. para uma ilustração desses conceitos.

Às vezes, tenho visto problemas em solicitar que se conte nós (vértices) em vez de arestas; portanto, peça esclarecimentos se não tiver certeza de que deve contar nós ou arestas durante um exame ou uma entrevista de emprego.


Existe alguma diferença na contagem dos nós e arestas. Parece que ambos irão dar o mesmo resultado. Corrija-me se eu estiver errada.
VINOTH ENERGETIC

@jdhao como pode a profundidade da raiz ser 2? É 0 (se as arestas são consideradas) ou 1 (se os nós são considerados).
Neowulf33

@ neowulf33, sim, estou terrivelmente errado. A profundidade do nó raiz deve ser 0. Excluirei meu comentário para não confundir as pessoas.
Jdhao # 10/18

2

Resposta Simples:
Profundidade:
1. Árvore : O número de arestas / arco do nó raiz ao nó folha da árvore é chamado de Profundidade da Árvore.
2. : O número de arestas / arco do nó raiz para esse nó é chamado como Profundidade desse nó.


2

Outra maneira de entender esses conceitos é a seguinte: Profundidade: desenhe uma linha horizontal na posição raiz e trate essa linha como terra. Portanto, a profundidade da raiz é 0 e todos os seus filhos crescem para baixo, para que cada nível de nós tenha a profundidade atual + 1.

Altura: a mesma linha horizontal, mas desta vez a posição do solo são nós externos, que são a folha da árvore e contam para cima.


2

Eu queria fazer este post porque sou um estudante de graduação em CS e cada vez mais usamos o OpenDSA e outros livros de código aberto. Parece que, a partir da resposta mais bem avaliada, a maneira como a altura e a profundidade estão sendo ensinadas mudou de uma geração para a seguinte, e eu estou postando isso para que todos saibam que essa discrepância agora existe e, esperamos, não cause bugs em nenhuma programas! Obrigado.

Do livro OpenDSA Data Structures & Algos :

Se n 1 , n 2 , ..., n k é uma sequência de nós na árvore, de modo que n i é o pai de n i +1 para 1 <= i <k, essa sequência é chamada de caminho de n 1 a n k . O comprimento do caminho é k-1. Se houver um caminho do nó R para o nó M, então R é um ancestral de M e M é um descendente de R. Portanto, todos os nós da árvore são descendentes da raiz da árvore, enquanto a raiz é o ancestral de todos os nós. A profundidade de um nó M na árvore é o comprimento do caminho desde a raiz da árvore até M. A altura de uma árvore é um a mais que a profundidade do nó mais profundo da árvore.Todos os nós de profundidade d estão no nível d na árvore. A raiz é o único nó no nível 0 e sua profundidade é 0.

Figura 7.2.1

Figura 7.2.1: Uma árvore binária. O nó A é a raiz. Os nós B e C são filhos de A. Os nós B e D juntos formam uma subárvore. O nó B tem dois filhos: o filho esquerdo é a árvore vazia e o filho direito é D. Os nós A, C e E são ancestrais de G. Os nós D, E e F compõem o nível 2 da árvore; o nó A está no nível 0. As arestas de A a C a E a G formam um caminho de comprimento 3. Os nós D, G, H e I são folhas. Os nós A, B, C, E e F são nós internos. A profundidade de I é 3. A altura desta árvore é 4.


Para o que vale a pena, a definição neste link foi alterada para: "A profundidade de um nó M na árvore é o comprimento do caminho da raiz da árvore até M. A altura de uma árvore é a profundidade da nó mais profundo da árvore. "
kaya3
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.