Étant donné un arbre binaire, la tâche consiste à trouver la hauteur de l’arbre. La hauteur de l’arbre est le nombre de sommets de l’arbre depuis la racine jusqu’au nœud le plus profond.
Note: La hauteur d'un arbre vide est 0 et la hauteur d'un arbre à nœud unique est 1 .

Exemple d'arbre binaire
Pratique recommandée Hauteur de l'arbre binaire Essayez-le !Calculer récursivement la hauteur du gauche et le droite sous-arbres d'un nœud et attribuez la hauteur au nœud comme maximum de la taille de deux enfants plus 1 . Voir ci-dessous le pseudo-code et le programme pour plus de détails.
Illustration:
Considérons l'arbre suivant :
Exemple d'arbre
maxDepth('1') = max(maxDepth('2'), maxDepth('3')) + 1 = 2 + 1
conversion de date en chaîneparce que récursivement
maxDepth('2') = max (maxDepth('4'), maxDepth('5')) + 1 = 1 + 1 et (car la hauteur de « 4 » et de « 5 » est égale à 1)
profondeurmax('3') = 1
Suivez les étapes ci-dessous pour mettre en œuvre l'idée :
- Effectuez de manière récursive une recherche en profondeur d'abord.
- Si l'arborescence est vide, renvoie 0
- Sinon, procédez comme suit
- Obtenez la profondeur maximale du sous-arbre gauche de manière récursive, c'est-à-dire appelez maxDepth (tree->left-subtree)
- Obtenez la profondeur maximale du sous-arbre droit de manière récursive, c'est-à-dire appelez maxDepth (tree->right-subtree)
- Obtenez le maximum des profondeurs maximales de gauche et droite sous-arbres et ajouter 1 à lui pour le nœud actuel.
-
- Renvoie max_profondeur.
Vous trouverez ci-dessous la mise en œuvre de l’approche ci-dessus :
C++
// C++ program to find height of tree> #include> using> namespace> std;> /* A binary tree node has data, pointer to left child> and a pointer to right child */> class> node {> public> :> > int> data;> > node* left;> > node* right;> };> /* Compute the 'maxDepth' of a tree -- the number of> > nodes along the longest path from the root node> > down to the farthest leaf node.*/> int> maxDepth(node* node)> {> > if> (node == NULL)> > return> 0;> > else> {> > /* compute the depth of each subtree */> > int> lDepth = maxDepth(node->à gauche);> > int> rDepth = maxDepth(node->à droite);> > /* use the larger one */> > if> (lDepth>rProfondeur)> > return> (lDepth + 1);> > else> > return> (rDepth + 1);> > }> }> /* Helper function that allocates a new node with the> given data and NULL left and right pointers. */> node* newNode(> int> data)> {> > node* Node => new> node();> > Node->données = données ;> > Node->gauche = NULL;> > Node->droite = NULL;> > return> (Node);> }> // Driver code> int> main()> {> > node* root = newNode(1);> > root->gauche = nouveauNode(2);> > root->right = newNode(3);> > root->gauche->gauche = newNode(4);> > root->gauche->droite = newNode(5);> > cout <<> 'Height of tree is '> << maxDepth(root);> > return> 0;> }> // This code is contributed by Amit Srivastav> |
>
>
C
#include> #include> /* A binary tree node has data, pointer to left child> > and a pointer to right child */> struct> node {> > int> data;> > struct> node* left;> > struct> node* right;> };> /* Compute the 'maxDepth' of a tree -- the number of> > nodes along the longest path from the root node> > down to the farthest leaf node.*/> int> maxDepth(> struct> node* node)> {> > if> (node == NULL)> > return> 0;> > else> {> > /* compute the depth of each subtree */> > int> lDepth = maxDepth(node->à gauche);> > int> rDepth = maxDepth(node->à droite);> > /* use the larger one */> > if> (lDepth>rProfondeur)> > return> (lDepth + 1);> > else> > return> (rDepth + 1);> > }> }> /* Helper function that allocates a new node with the> > given data and NULL left and right pointers. */> struct> node* newNode(> int> data)> {> > struct> node* node> > = (> struct> node*)> malloc> (> sizeof> (> struct> node));> > node->données = données ;> > node->gauche = NULL;> > node->droite = NULL;> > return> (node);> }> int> main()> {> > struct> node* root = newNode(1);> > root->gauche = nouveauNode(2);> > root->right = newNode(3);> > root->gauche->gauche = newNode(4);> > root->gauche->droite = newNode(5);> > printf> (> 'Height of tree is %d'> , maxDepth(root));> > getchar> ();> > return> 0;> }> |
>
>
Java
// Java program to find height of tree> // A binary tree node> class> Node {> > int> data;> > Node left, right;> > Node(> int> item)> > {> > data = item;> > left = right => null> ;> > }> }> class> BinaryTree {> > Node root;> > /* Compute the 'maxDepth' of a tree -- the number of> > nodes along the longest path from the root node> > down to the farthest leaf node.*/> > int> maxDepth(Node node)> > {> > if> (node ==> null> )> > return> 0> ;> > else> {> > /* compute the depth of each subtree */> > int> lDepth = maxDepth(node.left);> > int> rDepth = maxDepth(node.right);> > /* use the larger one */> > if> (lDepth>rProfondeur)> > return> (lDepth +> 1> );> > else> > return> (rDepth +> 1> );> > }> > }> > /* Driver program to test above functions */> > public> static> void> main(String[] args)> > {> > BinaryTree tree => new> BinaryTree();> > tree.root => new> Node(> 1> );> > tree.root.left => new> Node(> 2> );> > tree.root.right => new> Node(> 3> );> > tree.root.left.left => new> Node(> 4> );> > tree.root.left.right => new> Node(> 5> );> > System.out.println(> 'Height of tree is '> > + tree.maxDepth(tree.root));> > }> }> // This code has been contributed by Amit Srivastav> |
>
>
Python3
# Python3 program to find the maximum depth of tree> # A binary tree node> class> Node:> > # Constructor to create a new node> > def> __init__(> self> , data):> > self> .data> => data> > self> .left> => None> > self> .right> => None> # Compute the 'maxDepth' of a tree -- the number of nodes> # along the longest path from the root node down to the> # farthest leaf node> def> maxDepth(node):> > if> node> is> None> :> > return> 0> > else> :> > # Compute the depth of each subtree> > lDepth> => maxDepth(node.left)> > rDepth> => maxDepth(node.right)> > # Use the larger one> > if> (lDepth>rProfondeur):> > return> lDepth> +> 1> > else> :> > return> rDepth> +> 1> # Driver program to test above function> root> => Node(> 1> )> root.left> => Node(> 2> )> root.right> => Node(> 3> )> root.left.left> => Node(> 4> )> root.left.right> => Node(> 5> )> print> (> 'Height of tree is %d'> %> (maxDepth(root)))> # This code is contributed by Amit Srivastav> |
>
>
C#
// C# program to find height of tree> using> System;> // A binary tree node> public> class> Node {> > public> int> data;> > public> Node left, right;> > public> Node(> int> item)> > {> > data = item;> > left = right => null> ;> > }> }> public> class> BinaryTree {> > Node root;> > /* Compute the 'maxDepth' of a tree -- the number of> > nodes along the longest path from the root node> > down to the farthest leaf node.*/> > int> maxDepth(Node node)> > {> > if> (node ==> null> )> > return> 0;> > else> {> > /* compute the depth of each subtree */> > int> lDepth = maxDepth(node.left);> > int> rDepth = maxDepth(node.right);> > /* use the larger one */> > if> (lDepth>rProfondeur)> > return> (lDepth + 1);> > else> > return> (rDepth + 1);> > }> > }> > /* Driver code */> > public> static> void> Main(String[] args)> > {> > BinaryTree tree => new> BinaryTree();> > tree.root => new> Node(1);> > tree.root.left => new> Node(2);> > tree.root.right => new> Node(3);> > tree.root.left.left => new> Node(4);> > tree.root.left.right => new> Node(5);> > Console.WriteLine(> 'Height of tree is '> > + tree.maxDepth(tree.root));> > }> }> // This code has been contributed by> // Correction done by Amit Srivastav> |
>
>
Javascript
> // JavaScript program to find height of tree> // A binary tree node> class Node> {> > constructor(item)> > {> > this> .data=item;> > this> .left=> this> .right=> null> ;> > }> }> > let root;> > > /* Compute the 'maxDepth' of a tree -- the number of> > nodes along the longest path from the root node> > down to the farthest leaf node.*/> > function> maxDepth(node)> > {> > if> (node ==> null> )> > return> 0;> > else> > {> > /* compute the depth of each subtree */> > let lDepth = maxDepth(node.left);> > let rDepth = maxDepth(node.right);> > > /* use the larger one */> > if> (lDepth>rProfondeur)> > return> (lDepth + 1);> > else> > return> (rDepth + 1);> > }> > }> > > /* Driver program to test above functions */> > > root => new> Node(1);> > root.left => new> Node(2);> > root.right => new> Node(3);> > root.left.left => new> Node(4);> > root.left.right => new> Node(5);> > > document.write(> 'Height of tree is : '> +> > maxDepth(root));> // This code is contributed by rag2127> //Correction done by Amit Srivastav> > |
>
>
Sortir
Height of tree is 3>
Complexité temporelle : O(N) (Veuillez consulter le message sur Traversée des arbres pour plus de détails)
Espace auxiliaire : O(N) en raison de la pile récursive.
Trouvez la profondeur ou la hauteur maximale d'un arbre à l'aide de Traversée de l'ordre des niveaux :
Faire Traversée de l'ordre des niveaux , tout en ajoutant des nœuds à chaque niveau pour Suivez les étapes ci-dessous pour mettre en œuvre l'idée :
- Parcourez l'arbre dans l'ordre des niveaux à partir de racine .
- Initialiser une file d'attente vide Q , une variable profondeur et pousser racine , puis appuyez sur nul dans le Q .
- Exécutez une boucle while jusqu'à Q n'est pas vide.
- Rangez l'élément avant de Q et sortez l'élément avant.
- Si l'avant de Q est NUL puis incrémenter profondeur par un et si la file d'attente n'est pas vide, appuyez sur NUL dans le Q .
- Sinon, si l'élément n'est pas NUL puis vérifiez son gauche et droite enfants et s'ils ne le sont pas NUL poussez-les dans Q .
- Retour profondeur .
Vous trouverez ci-dessous la mise en œuvre de l’approche ci-dessus :
10 sur 50,00C++
#include>
#include>
using>
namespace>
std;>
// A Tree node>
struct>
Node {>
>
int>
key;>
>
struct>
Node *left, *right;>
};>
// Utility function to create a new node>
Node* newNode(>
int>
key)>
{>
>
Node* temp =>
new>
Node;>
>
temp->clé = clé;>
>
temp->gauche = temp->droite = NULL;>
>
return>
(temp);>
}>
/*Function to find the height(depth) of the tree*/>
int>
height(>
struct>
Node* root)>
{>
>
// Initialising a variable to count the>
>
// height of tree>
>
int>
depth = 0;>
>
queue q;>
>
// Pushing first level element along with NULL>
>
q.push(root);>
>
q.push(NULL);>
>
while>
(!q.empty()) {>
>
Node* temp = q.front();>
>
q.pop();>
>
// When NULL encountered, increment the value>
>
if>
(temp == NULL) {>
>
depth++;>
>
}>
>
// If NULL not encountered, keep moving>
>
if>
(temp != NULL) {>
>
if>
(temp->gauche) {>
>
q.push(temp->à gauche);>
>
}>
>
if>
(temp->à droite) {>
>
q.push(temp->à droite);>
>
}>
>
}>
>
// If queue still have elements left,>
>
// push NULL again to the queue.>
>
else>
if>
(!q.empty()) {>
>
q.push(NULL);>
>
}>
>
}>
>
return>
depth;>
}>
// Driver program>
int>
main()>
{>
>
// Let us create Binary Tree shown in above example>
>
Node* root = newNode(1);>
>
root->gauche = nouveauNode(2);>
>
root->right = newNode(3);>
>
root->gauche->gauche = newNode(4);>
>
root->gauche->droite = newNode(5);>
>
cout <<>
'Height(Depth) of tree is: '>
<< height(root);>
}>
>>Java
// Java program for above approach>
import>
java.util.LinkedList;>
import>
java.util.Queue;>
class>
GFG {>
>
// A tree node structure>
>
static>
class>
Node {>
>
int>
key;>
>
Node left;>
>
Node right;>
>
}>
>
// Utility function to create>
>
// a new node>
>
static>
Node newNode(>
int>
key)>
>
{>
>
Node temp =>
new>
Node();>
>
temp.key = key;>
>
temp.left = temp.right =>
null>
;>
>
return>
temp;>
>
}>
>
/*Function to find the height(depth) of the tree*/>
>
public>
static>
int>
height(Node root)>
>
{>
>
// Initialising a variable to count the>
>
// height of tree>
>
int>
depth =>
0>
;>
>
Queue q =>
new>
LinkedList();>
>
// Pushing first level element along with null>
>
q.add(root);>
>
q.add(>
null>
);>
>
while>
(!q.isEmpty()) {>
>
Node temp = q.peek();>
>
q.remove();>
>
// When null encountered, increment the value>
>
if>
(temp ==>
null>
) {>
>
depth++;>
>
}>
>
// If null not encountered, keep moving>
>
if>
(temp !=>
null>
) {>
>
if>
(temp.left !=>
null>
) {>
>
q.add(temp.left);>
>
}>
>
if>
(temp.right !=>
null>
) {>
>
q.add(temp.right);>
>
}>
>
}>
>
// If queue still have elements left,>
>
// push null again to the queue.>
>
else>
if>
(!q.isEmpty()) {>
>
q.add(>
null>
);>
>
}>
>
}>
>
return>
depth;>
>
}>
>
// Driver Code>
>
public>
static>
void>
main(String args[])>
>
{>
>
Node root = newNode(>
1>
);>
>
root.left = newNode(>
2>
);>
>
root.right = newNode(>
3>
);>
>
root.left.left = newNode(>
4>
);>
>
root.left.right = newNode(>
5>
);>
>
System.out.println(>
'Height(Depth) of tree is: '>
>
+ height(root));>
>
}>
}>
// This code is contributed by jana_sayantan.>
>>Python3
# Python code to implement the approach>
# A Tree node>
class>
Node:>
>
def>
__init__(>
self>
):>
>
self>
.key>
=>
0>
>
self>
.left,>
self>
.right>
=>
None>
,>
None>
# Utility function to create a new node>
def>
newNode(key):>
>
temp>
=>
Node()>
>
temp.key>
=>
key>
>
temp.left, temp.right>
=>
None>
,>
None>
>
return>
temp>
# Function to find the height(depth) of the tree>
def>
height(root):>
>
# Initialising a variable to count the>
>
# height of tree>
>
depth>
=>
0>
>
q>
=>
[]>
>
# appending first level element along with None>
>
q.append(root)>
>
q.append(>
None>
)>
>
while>
(>
len>
(q)>>
0>
):>
>
temp>
=>
q[>
0>
]>
>
q>
=>
q[>
1>
:]>
>
# When None encountered, increment the value>
>
if>
(temp>
=>
=>
None>
):>
>
depth>
+>
=>
1>
>
# If None not encountered, keep moving>
>
if>
(temp !>
=>
None>
):>
>
if>
(temp.left):>
>
q.append(temp.left)>
>
if>
(temp.right):>
>
q.append(temp.right)>
>
# If queue still have elements left,>
>
# append None again to the queue.>
>
elif>
(>
len>
(q)>>
0>
):>
>
q.append(>
None>
)>
>
return>
depth>
# Driver program>
# Let us create Binary Tree shown in above example>
root>
=>
newNode(>
1>
)>
root.left>
=>
newNode(>
2>
)>
root.right>
=>
newNode(>
3>
)>
root.left.left>
=>
newNode(>
4>
)>
root.left.right>
=>
newNode(>
5>
)>
print>
(f>
'Height(Depth) of tree is: {height(root)}'>
)>
# This code is contributed by shinjanpatra>
>>C#
// C# Program to find the Maximum Depth or Height of Binary Tree>
using>
System;>
using>
System.Collections.Generic;>
// A Tree node>
public>
class>
Node {>
>
public>
int>
data;>
>
public>
Node left, right;>
>
public>
Node(>
int>
item)>
>
{>
>
data = item;>
>
left =>
null>
;>
>
right =>
null>
;>
>
}>
}>
public>
class>
BinaryTree {>
>
Node root;>
>
// Function to find the height(depth) of the tree>
>
int>
height()>
>
{>
>
// Initialising a variable to count the>
>
// height of tree>
>
int>
depth = 0;>
>
Queue q =>
new>
Queue();>
>
// Pushing first level element along with NULL>
>
q.Enqueue(root);>
>
q.Enqueue(>
null>
);>
>
while>
(q.Count != 0) {>
>
Node temp = q.Dequeue();>
>
// When NULL encountered, increment the value>
>
if>
(temp ==>
null>
)>
>
depth++;>
>
// If NULL not encountered, keep moving>
>
if>
(temp !=>
null>
) {>
>
if>
(temp.left !=>
null>
) {>
>
q.Enqueue(temp.left);>
>
}>
>
if>
(temp.right !=>
null>
) {>
>
q.Enqueue(temp.right);>
>
}>
>
}>
>
// If queue still have elements left,>
>
// push NULL again to the queue>
>
else>
if>
(q.Count != 0) {>
>
q.Enqueue(>
null>
);>
>
}>
>
}>
>
return>
depth;>
>
}>
>
// Driver program>
>
public>
static>
void>
Main()>
>
{>
>
// Let us create Binary Tree shown in above example>
>
BinaryTree tree =>
new>
BinaryTree();>
>
tree.root =>
new>
Node(1);>
>
tree.root.left =>
new>
Node(2);>
>
tree.root.right =>
new>
Node(3);>
>
tree.root.left.left =>
new>
Node(4);>
>
tree.root.left.right =>
new>
Node(5);>
>
Console.WriteLine(>
'Height(Depth) of tree is: '>
>
+ tree.height());>
>
}>
}>
// This code is contributed by Yash Agarwal(yashagarwal2852002)>
>>Javascript
>
// JavaScript code to implement the approach>
// A Tree node>
class Node{>
>
constructor(){>
>
this>
.key = 0>
>
this>
.left =>
null>
>
this>
.right =>
null>
>
}>
}>
// Utility function to create a new node>
function>
newNode(key){>
>
let temp =>
new>
Node()>
>
temp.key = key>
>
temp.left =>
null>
>
temp.right =>
null>
>
return>
temp>
}>
// Function to find the height(depth) of the tree>
function>
height(root){>
>
// Initialising a variable to count the>
>
// height of tree>
>
let depth = 0>
>
let q = []>
>
>
// pushing first level element along with null>
>
q.push(root)>
>
q.push(>
null>
)>
>
while>
(q.length>0){>
>
let temp = q.shift()>
>
>
// When null encountered, increment the value>
>
if>
(temp ==>
null>
)>
>
depth += 1>
>
>
// If null not encountered, keep moving>
>
if>
(temp !=>
null>
){>
>
if>
(temp.left)>
>
q.push(temp.left)>
>
>
if>
(temp.right)>
>
q.push(temp.right)>
>
}>
>
>
// If queue still have elements left,>
>
// push null again to the queue.>
>
else>
if>
(q.length>0)>
>
q.push(>
null>
)>
>
}>
>
return>
depth>
}>
// Driver program>
// Let us create Binary Tree shown in above example>
let root = newNode(1)>
root.left = newNode(2)>
root.right = newNode(3)>
root.left.left = newNode(4)>
root.left.right = newNode(5)>
document.write(`Height(Depth) of tree is: ${height(root)}`,>
''>
)>
// This code is contributed by shinjanpatra>
>
>>
SortirHeight(Depth) of tree is: 3>Complexité temporelle : SUR)
Espace auxiliaire : SUR)Une autre méthode pour trouver la hauteur en utilisant Traversée de l'ordre des niveaux :
C++
// C++ program for above approach>
#include>
using>
namespace>
std;>
// A Tree node>
struct>
Node {>
>
int>
key;>
>
struct>
Node *left, *right;>
};>
// Utility function to create a new node>
Node* newNode(>
int>
key)>
{>
>
Node* temp =>
new>
Node;>
>
temp->clé = clé;>
>
temp->gauche = temp->droite = NULL;>
>
return>
(temp);>
}>
/*Function to find the height(depth) of the tree*/>
int>
height(Node* root)>
{>
>
// Initialising a variable to count the>
>
// height of tree>
>
queue q;>
>
q.push(root);>
>
int>
height = 0;>
>
while>
(!q.empty()) {>
>
int>
size = q.size();>
>
for>
(>
int>
i = 0; i Node* temp = q.front(); q.pop(); if (temp->gauche != NULL) { q.push(temp->gauche); } if (temp->right != NULL) { q.push(temp->right); } } hauteur++; } renvoie la hauteur ; } // Programme pilote int main() { // Créons l'arbre binaire montré dans l'exemple ci-dessus Node* root = newNode(1); racine->gauche = newNode(2); racine->droite = newNode(3); racine->gauche->gauche = newNode(4); racine->gauche->droite = newNode(5); cout<< 'Height(Depth) of tree is: ' << height(root); } // This code is contributed by Abhijeet Kumar(abhijeet19403)>
>>Java
// Java program for above approach>
import>
java.util.LinkedList;>
import>
java.util.Queue;>
class>
GFG {>
>
// A tree node structure>
>
static>
class>
Node {>
>
int>
key;>
>
Node left;>
>
Node right;>
>
}>
>
// Utility function to create>
>
// a new node>
>
static>
Node newNode(>
int>
key)>
>
{>
>
Node temp =>
new>
Node();>
>
temp.key = key;>
>
temp.left = temp.right =>
null>
;>
>
return>
temp;>
>
}>
>
/*Function to find the height(depth) of the tree*/>
>
public>
static>
int>
height(Node root)>
>
{>
>
// Initialising a variable to count the>
>
// height of tree>
>
Queue q =>
new>
LinkedList();>
>
q.add(root);>
>
int>
height =>
0>
;>
>
while>
(!q.isEmpty()) {>
>
int>
size = q.size();>
>
for>
(>
int>
i =>
0>
; i Node temp = q.poll(); if (temp.left != null) { q.add(temp.left); } if (temp.right != null) { q.add(temp.right); } } height++; } return height; } // Driver Code public static void main(String args[]) { Node root = newNode(1); root.left = newNode(2); root.right = newNode(3); root.left.left = newNode(4); root.left.right = newNode(5); System.out.println('Height(Depth) of tree is: ' + height(root)); } }>
>>Python3
# Python3 program to find the height of a tree>
>
# A binary tree node>
class>
Node:>
>
>
# Constructor to create a new node>
>
def>
__init__(>
self>
, data):>
>
self>
.key>
=>
data>
>
self>
.left>
=>
None>
>
self>
.right>
=>
None>
>
# Function to find height of tree>
def>
height(root):>
>
# Base Case>
>
if>
root>
is>
None>
:>
>
return>
0>
>
>
# Create an empty queue for level order traversal>
>
q>
=>
[]>
>
>
# Enqueue Root and initialize height>
>
q.append(root)>
>
height>
=>
0>
>
>
# Loop while queue is not empty>
>
while>
q:>
>
>
# nodeCount (queue size) indicates number of nodes>
>
# at current level>
>
nodeCount>
=>
len>
(q)>
>
>
# Dequeue all nodes of current level and Enqueue all>
>
# nodes of next level>
>
while>
nodeCount>>
0>
:>
>
node>
=>
q.pop(>
0>
)>
>
if>
node.left>
is>
not>
None>
:>
>
q.append(node.left)>
>
if>
node.right>
is>
not>
None>
:>
>
q.append(node.right)>
>
nodeCount>
->
=>
1>
>
height>
+>
=>
1>
>
>
return>
height>
>
# Driver Code>
root>
=>
Node(>
1>
)>
root.left>
=>
Node(>
2>
)>
root.right>
=>
Node(>
3>
)>
root.left.left>
=>
Node(>
4>
)>
root.left.right>
=>
Node(>
5>
)>
>
print>
(>
'Height(Depth) of tree is'>
, height(root))>
>>C#
using>
System;>
using>
System.Collections.Generic;>
class>
GFG {>
>
// A Tree node>
>
class>
Node {>
>
public>
int>
key;>
>
public>
Node left, right;>
>
public>
Node(>
int>
key)>
>
{>
>
this>
.key=key;>
>
this>
.left=>
this>
.right=>
null>
;>
>
}>
>
}>
>
// Utility function to create a new node>
>
/*Node newNode(int key)>
>
{>
>
Node* temp = new Node;>
>
temp.key = key;>
>
temp.left = temp.right = NULL;>
>
return (temp);>
>
}*/>
>
/*Function to find the height(depth) of the tree*/>
>
static>
int>
height(Node root)>
>
{>
>
// Initialising a variable to count the>
>
// height of tree>
>
Queue q=>
new>
Queue();>
>
q.Enqueue(root);>
>
int>
height = 0;>
>
while>
(q.Count>0) {>
>
int>
size = q.Count;>
>
for>
(>
int>
i = 0; i Node temp = q.Peek(); q.Dequeue(); if (temp.left != null) { q.Enqueue(temp.left); } if (temp.right != null) { q.Enqueue(temp.right); } } height++; } return height; } // Driver program public static void Main() { // Let us create Binary Tree shown in above example Node root = new Node(1); root.left = new Node(2); root.right = new Node(3); root.left.left = new Node(4); root.left.right = new Node(5); Console.Write('Height(Depth) of tree is: ' + height(root)); } } // This code is contributed by poojaagarwal2.>
>>Javascript
// JavaScript program for above approach>
// a tree node>
class Node{>
>
constructor(key){>
>
this>
.key = key;>
>
this>
.left =>
this>
.right =>
null>
;>
>
}>
}>
// utility function to create a new node>
function>
newNode(key){>
>
return>
new>
Node(key);>
}>
// function to find the height of the tree>
function>
height(root){>
>
// initialising a variable to count the>
>
// height of tree>
>
let q = [];>
>
q.push(root);>
>
let height = 0;>
>
while>
(q.length>0){>
>
let size = q.length;>
>
for>
(let i = 0; i let temp = q.shift(); if(temp.left != null){ q.push(temp.left); } if(temp.right != null){ q.push(temp.right); } } height++; } return height; } // driver code let root = newNode(1); root.left = newNode(2); root.right = newNode(3); root.left.left = newNode(4); root.left.right = newNode(5); document.write('Height(Depth) of tree is: ' + height(root)); // this code is contributed by Kirti Agarwal(kirtiagarwal23121999)>
>>
SortirHeight(Depth) of tree is: 3>Complexité temporelle : SUR)
Espace auxiliaire : SUR)