0% found this document useful (0 votes)
657 views

Resource Person: Zafar Mehmood Khattak

The document discusses different types of trees including binary trees and binary search trees. It defines key tree terminology like root, child, parent, and leaf nodes. It explains properties of different types of binary trees such as full, extended, and complete binary trees. The document also provides algorithms and code examples for constructing binary search trees and performing operations like insertion, searching, and traversal on binary trees.

Uploaded by

Vicky Butt
Copyright
© Attribution Non-Commercial (BY-NC)
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
657 views

Resource Person: Zafar Mehmood Khattak

The document discusses different types of trees including binary trees and binary search trees. It defines key tree terminology like root, child, parent, and leaf nodes. It explains properties of different types of binary trees such as full, extended, and complete binary trees. The document also provides algorithms and code examples for constructing binary search trees and performing operations like insertion, searching, and traversal on binary trees.

Uploaded by

Vicky Butt
Copyright
© Attribution Non-Commercial (BY-NC)
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
You are on page 1/ 45

Resource Person:

Zafar Mehmood Khattak


Today Topics

 What are Trees?

 Types of Trees
 Binary Tree
 Full Binary Tree
 Extended Binary Tree
 Complete Binary Tree

 Binary Search Tree (BST)


 Constructing Binary Search Tree
 Representation of Binary Tree inside Computer
What are Trees?
 It is a non-linear data structure

 Each object of a tree starts with a root and extends into several
branches

 Each branch may extend into other branches until finally terminated
by a leaf

 Examples of the trees are:

 Lineage of a person that is referred to as the family tree

 Organizational chart of a company


 Game playing
 AI applications
What are Trees?
 It is an hierarchical collection of finite elements

 Each element is called a node

 A general tree is shown as:


What are Trees?
Trees have the following properties:

 Each tree has one node designated as the root of the tree

 A unique path exists from the root node to all other nodes in the tree

 Each node, other that the root, has a unique predecessor, it is also
called the parent

 Each node may have no, one or several successor nodes, it is also
called the child
General characteristics of trees
 Node
 Degree
 Children
 Parent
 Siblings
 Ancestors
 Leaves
 Path from node n1 to nk
 a sequence of nodes n1,n2,...,nk such that ni is the parent of ni+1 for 1<= i < k
 Path length
 Level
 Height of a node
 Height of a tree
 Depth of a node
 Depth of a tree
 Along with arrays and lists, trees are the most frequently encountered data
structure in computer algorithms
Basic terms of Trees

 Root Node
 The unique node in the tree that has no parent node

 Parent Node
 The node, which generates links for other nodes

 Child Node
 The node that is directly connected to a parent node

 Subtrees
 The child node of the root node that has its own child nodes
Basic terms of Trees
 Terminal or leaf Node
 The node having no successor or child

 Siblings
 The nodes having a common parents

 Depth of Node
 Each node has a unique path connecting it to the root. The depth of a node is
the total number of nodes between the node and root

 Height of Tree
 The maximum depth among all of the nodes of a tree
Basic terms of Trees
 Empty Tree
 A tree that has no node

 Degree of Node
 The number of children of a node

 Full Tree
 A tree, which all its internal nodes have the same degree and all the
leaves are at the same level

 Singleton Tree
 The tree whose root is its only node
Basic terms of Trees

 Height of a node u is the height of the subtree rooted at u


 Level of a node is defined by letting root be at level 0. If
node is at level i, then its children are at level i +1
 Degenerate tree – only one child
 Balanced tree – mostly two children
 Complete tree– always two children
Binary Tree

 It is a hierarchical collection of a finite number of nodes in


which each node can have a maximum of two children

 One child is on the left side

 One child is on the right side

 It may be empty or non-empty but a general tree cannot


be empty
Binary Tree

A non-empty binary tree may have the three parts:

 Root Node
 The node that has no parent

 Left Child Node


 The node that lies on the left side of the root

 Right Child Node


 The node that lies on the right side of the root
Binary Tree ADT: Properties

 Full Binary Tree:


 All the internal nodes, non-leaf nodes, have two children.
 All the leaves are at the same depth k.
 The number of internal nodes in depth k tree is 2k - 1, where k >= 0
 The number of leaves in a depth k tree is 2k
 The total number of nodes in a depth k tree is 2k+1 - 1
 The height of the tree with n nodes is log2(n + 1)-1

Internal node: the node having two


child
External node: the node having no
Binary Tree ADT: Properties

 Proper Binary Tree


 All the internal nodes have two children.
 The leaves can be located at different depths.
 The number of internal nodes in a depth k tree is at least k and at
most 2k - 1, where k >= 0
 The number of leaves in a depth k tree is at least k + 1 and most 2k
 The total number of nodes in a depth k tree is at least 2k + 1 and at
most 2k+1 – 1
 The height of the tree with n nodes is at least log2(n + 1)-1 and at
most (n-1)/2
Full Binary Tree
 .
Extended Binary Tree
 A binary tree in which each node has either no child or two children
 It is also called 2-Tree
 The node that has two children is called internal node
 The node that has no child is called external node
How to find height of binary
tree:
 Suppose a point p to the root node is given,
 If binary tree is empty then height is 0, else
 Find the height of the left sub tree and then find
the height of right sub tree and then add 1 to find
the find height of binary tree.
 If(p==NULL)
 Height(p)=0;
 Return 0;
 Else
 return 1+(max(height(p->llink), height (p->rlink)
Constructing Binary Search
Tree
 Suppose the BST have the following values to be const.

 16, 19, 15, 9, 8, 66, 12, 61


 The following rule are followed to construct the BST.
 1. place the first value as root.
 2. Compare the second value with the root value, and place to
the left of the root if it is less than root. Other wise place to
right.
 3. repeat step 2 for all values starting from root.
 But keep in mind that duplication of values in BST is not
allowed.
Constructing BST
 .

16

19
15

66
9

8 12 61
Operation on binary tree

 Insertion
 Deletion
 Searching
 Traversing

 Write algorithm and code for deletion and


traversing by yourself,
Insertion.
 Adding a value to BST can be divided into two stages:
 search for a place to put a new element;
 insert the new element to this place.
 At this stage algorithm should follow binary search tree
property. If a new value is less, than the current node's value, go
to the left subtree, else go to the right subtree. Following this
simple rule, the algorithm reaches a node, which has no left or
right subtree. By the moment a place for insertion is found, we
can say for sure, that a new value has no duplicate in the tree.
Initially, a new node has no children, so it is a leaf.
Insertion algorithm.

1. check, whether value in current node and a new value are equal. If
so,
1.1. duplicate is found.
1.2. And exit, Otherwise,
2. if a new value is less, than the node's value:
2.1. if a current node has no left child,
2.2 place for insertion has been found;
2.3. otherwise, handle the left child with the same algorithm.
3. if a new value is greater, than the node's value:
3.1. if a current node has no right child,
3.2. place for insertion has been found;
3.3. otherwise, handle the right child with the same algorithm.
Insertion code.

 bool BinarySearchTree::add(int value) {


       if (root == NULL) {
             root = new BSTNode(value);
             return true;
       } else
             return root->add(value);
 }
  
 bool BSTNode::add(int value) {
       if (value == this->value)
             return false;
       else if (value < this->value) {
             if (left == NULL) {
                   left = new BSTNode(value);
                   return true;
             } else
                   return left->add(value);
       } else if (value > this->value) {
             if (right == NULL) {
                   right = new BSTNode(value);
                   return true;
             } else
                   return right->add(value);
       }
       return false; }
Searching

 searching for a value in a BST is very similar to


add operation. Search algorithm traverses
the tree "in-depth", choosing appropriate
way to go, following binary search tree
property and compares value of each visited
node with the one, we are looking for.
Algorithm stops in two cases:
 a node with necessary value is found;
 algorithm has no way to go.
Searching
1. check, whether value in current node and searched
value are equal. If so,
1. value is found.
2. Exit , Otherwise,
2. if searched value is less, than the node's value:
 if current node has no left child, searched value doesn't
exist in the BST;
 otherwise, handle the left child with the same algorithm.
3. if a new value is greater, than the node's value:
 if current node has no right child, searched value doesn't
exist in the BST;
 otherwise, handle the right child with the same
algorithm.
Searching
 bool BinarySearchTree::search(int value)
 {
       if (root == NULL)
             return false;
       else
             return root->search(value);
 }
  
bool BSTNode::search(int value) {
       if (value == this->value)
             return true;
       else if (value < this->value) {
             if (left == NULL)
                   return false;
             else
                   return left->search(value);
       } else if (value > this->value) {
             if (right == NULL)
                   return false;
             else
                   return right->search(value);
       }
       return false;
 }
Tree Traversal

 In a traversal, each and every node is visited once


 A full traversal produces a linear order for the
nodes
 Traversal Methods:
 Inorder (Left Child, Node, Right Child)
 Preorder (Node, Left Child, Right Child)
 Postorder (Left Child, Right Child, Node)
 Level Order Traversal
Inorder Traversal (LNR: left, node, right)

 algorithm inorder(Treeptr T);


 (T is a pointer to a node in a binary tree. For full tree
traversal, pass inorder the pointer to the top of the tree )
 begin
 if T != NULL
 then
 inorder(T->Lchild);
 write(T->element); output: FDBGEACH
 inorder(T->Rchild);
 endif
inorder traversal, left, node, right.

 .

infix expression
a+b*c+d*e+f*g
Preorder Traversal (NLR: node, left,
right)
algorithm preorder(Treeptr T);
(T is a pointer to a node in a binary tree. For full tree
traversal, pass preorder the pointer to the top of the
tree)
begin
if T != NULL
then
write(T->data);
preorder(T->Lchild);
preorder(T->Rchild); Preorder
endif

Output: ABDFEGCH
PostOrder Traversal (LRN: left, right,
node)
algorithm postorder(Treeptr T);
(T is a pointer to a node in a binary tree. For full
tree traversal, pass postorder the pointer to the top
of the tree)
begin
if T != NULL
then
postorder(T->Lchild);
postorder(T->Rchild);
write(T->data);
endif
Output: FDGEBHCA
Postorder traversal, left, right, node.

 .

postfix expression
abc*+de*f+g*+
Traversing code

 Void intorder(int *p)


{
if( p!= NULL);
Cout<<(p->llink);
Inordeer(p->rlink);
}
}
And same for the post and pre order.
Level-Order Traversal
 First visit the root, then the root's left child, followed by the root's
right child, continue in this manner, visiting nodes at each new level
from leftmost node to rightmost node
 May need a queue structure to realize this traversal

algorithm LevelOrder(Treeptr T);


begin
front = 0; rear = 0 {initialize queue}
enqueue(T);
while (! queue_empty() ) do
dequeue(T);
write(T->data);
if T->Lchild not null then
enqueue(T->Lchild);
if T->Rchild not null then
enqueue(T->Rchild);
endwhile
end algorithm
Output: ABCDEHFG
Application: Expression Trees

 Algorithm to construct an expression tree given a


postfix expression (e.g. a b + c d e + * *)
 Read one symbol at a time
 If symbol is an operand, create a one-node tree and
push pointer to it onto stack
 If symbol is an operator, pop pointers to two trees, T1
and T2, from the stack and form a new tree whose
root is the operator and whose left and right children
point to T2 and T1, respectively (T2 oper T1)
 Push the pointer to the new tree onto the stack
Example
Construct an expression tree given a postfix expression (e.g. a b + c d e + * *)
Application: Expression Trees

 E= ( a + b * c ) + (( d * e + f) * )

 Leaves are operands (constants or variables)

 The other nodes (internal nodes) contain operators

 Will not be a binary tree if some operators are not binary


Example: Expression Trees
Class assignments, make a list

 Examples
5

10 10
2 45

5 30 5 45
30
2 25 45 2 25 30
10

25

Binary search Non-binary search


trees tree
Representation of BT in computer
 Two techniques are there to use.
 Linked storage technique.
 Most commonly used method for storing tree.
 This technique is almost similar to two way linked list
 Each node of the binary tree is represented by a three
fields.
 Each node contains two pointer fields, one for left child
and one for right child, and the third one is used to store
the value.
 If a root node contains no child, then the left and right
pointer fields contains the NULL values.
 The pointer fields values for both left and right children
of leaves nodes are always NULL.
Example of BT in memory

 The following example explains a node structure of the


tree:
struct node
{
int data;
node *left;
node *right;
};

“data” is of int type and is used to store integer values in


the node.

 “left” as a pointer to store memory address for left child


of the tree.
 “right” as a pointer to store memory address for right
child of the tree.
Representation of BT in
computer
 Sequential storage technique.
 Linear array is used to represent the tree inside the
computer.
 Best for static tree, structure cant not be changed, e.g.
binary tree, with the following rules.
 1. Root R is stored in first element of the array.
 2. The left child of the node k is stored in element
2 * K of the array.
 3. The right child of the node K is stored in element
2 * K+1 of the array.
 Where k represents the number of nodes of the tree.
Class assignments.

 42, 11, 87, 9 22, 99


 These are the values of binary tress,
 First construct BST form the given values
 Then represent it in memory.
 E= (a – b) / ( c * d) * e)
 Construct a binary tree from the given
expression.

You might also like