# Binary Tree:

A Binary tree is represented by a pointer to the topmost node (commonly known as the “root”) of the tree. If the tree is empty, then the value of the root is NULL. Each node of a Binary Tree contains the following parts: (1) Data. (2) Pointer to left child. (3) Pointer to right child.

**Properties of Binary Tree:**

- The maximum number of nodes at level ‘l’ of a binary tree is 2l:
- The Maximum number of nodes in a binary tree of height ‘h’ is 2h – 1:
- In a Binary Tree with N nodes, the minimum possible height or the minimum number of levels is Log2(N+1):
- A Binary Tree with L leaves has at least | Log2L |+ 1 levels:
- In a Binary tree where every node has 0 or 2 children, the number of leaf nodes is always one more than nodes with two children:
- In a non-empty binary tree, if n is the total number of nodes and e is the total number of edges, then e = n-1:

*Lets create a binary tree with new class .*

```
//creating trees class
#include<bits/stdc++.h>
using namespace std;
class node{
public:
int data;
node* left;
node* right;
node(int d)
{
this->data=d;
this->left=NULL;
this->right=NULL;
}
};
node* buildtree(node* root)
{
int data;
cout<<"enter val"<<endl ;
cin>>data;
root=new node(data);
if(data ==-1)
{
return NULL;
}
cout<<"left of"<<data<<endl;
root->left=buildtree(root->left);
cout<<"right of"<<data<<endl;
root->right=buildtree(root->right);
return root;
}
int main(){
node* root=NULL;
//creating tree;
root=buildtree(root);
return 0 ;
}
```

To Create a new Tree the complexities are :

Time complexity : O(N) . Space Complexity : O(N) . ,where N is the number of nodes in a binary tree