## Definition

A tree is a data structure that is commonly used in computer science to store and organize data in a hierarchical manner. At the top of the tree is a root node, which branches out into multiple child nodes. Each child node can then have its own child nodes, creating a tree-like structure.

Special directed/undirected graph with N nodes and N-1 edges.

Each node is can be reached from other nodes by some path.

No cycles.

Directed when you can only go from parent to child.

```
public class TreeNode {
private int value;
List<TreeNode> children;
}
```

- Usually tree problems are asked for binary tree.

## Binary Tree

- It is a hierarchical structure consisting of nodes, where each node has at most two children. The children of a node are referred to as the left child and the right child.

```
public class BinaryTreeNode {
private int data;
private BinaryTreeNode left;
private BinaryTreeNode right;
public BinaryTreeNode(int data) {
this.data = data;
this.left = null;
this.right = null;
}
public int getData() {
return this.data;
}
public void setData(int data) {
this.data = data;
}
public BinaryTreeNode getLeft() {
return this.left;
}
public void setLeft(BinaryTreeNode left) {
this.left = left;
}
public BinaryTreeNode getRight() {
return this.right;
}
public void setRight(BinaryTreeNode right) {
this.right = right;
}
}
```

Special binary trees

Complete binary tree.

Full binary tree.

No of nodes in a full binary tree

Height of full binary tree - log (number of nodes)

2^H - 1 = total nodes

H = log (total nodes)

Binary search tree (Explained in another blog)

Balanced binary tree (AVL , Red black)

Operations on Binary Tree or detailed explanation of Binary and Binary Search Tree will be in next blog. Keep in touch.

So this is it for this article. I hope it helped you somewhere. Don't forget to support us and share with other geekians.

Thank you, Have a nice day !!