# How to count the height of a binary tree

Given a

`binary tree`

, return binary tree`height`

Note : The

`height`

of the`binary tree`

is the`number of edges`

in the`longest path`

from the root node to a leaf node.

## Example

`Output`

:`2`

```
/* Definition for TreeNode
public class TreeNode
{
public int Value;
public TreeNode Left;
public TreeNode Right;
public TreeNode(int value)
{
Value = value;
}
}
*/
public sealed class Solution
{
public int Height(TreeNode root)
{
}
}
```

## Approach:

Almost all `binary tree`

problems can be solved using recursion or without it. Let's use recursion for this one.

The height of a binary tree can be represented as: `1`

+ maximum between `height of the left subtree`

and `height of the right subtree`

.

### Code

```
public int Height(TreeNode root)
{
if (root == null)
{
return -1;
}
int leftHeight = Height(root.Left);
int rightHeight = Height(root.Right);
return Math.Max(leftHeight, rightHeight) + 1;
}
```

**Time Complexity:** `O(n)`