0% found this document useful (0 votes)
360 views33 pages

Binary Tree Basics for CSE Students

This document discusses binary trees, including key terminology like root, leaf, interior nodes, depth, parent, child, ancestor, descendant, and sibling nodes. It explains different types of binary trees like degenerate, balanced, and complete binary trees. It covers representations of binary trees using arrays and linked lists. Finally, it describes common traversal algorithms for binary trees like preorder, inorder, and postorder traversals.

Uploaded by

Shahin Shuvo
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
360 views33 pages

Binary Tree Basics for CSE Students

This document discusses binary trees, including key terminology like root, leaf, interior nodes, depth, parent, child, ancestor, descendant, and sibling nodes. It explains different types of binary trees like degenerate, balanced, and complete binary trees. It covers representations of binary trees using arrays and linked lists. Finally, it describes common traversal algorithms for binary trees like preorder, inorder, and postorder traversals.

Uploaded by

Shahin Shuvo
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
You are on page 1/ 33

Data Structure (CSE 2101)

Instructor: Anna Fariha


Department of CSE, University of Dhaka
Lecture 12: Binary Tree

Instructor: Anna Fariha


Department of CSE, University of Dhaka
Tree as a Data Structure
Tree is a nonlinear data structure
• Contain a distinguished node R, called the root of tree and a set of subtrees.
• Two nodes n1 and n2 are called siblings if they have the same parent node.
• Tree
– Nodes
– Each node can have 0 or more children
– A node can have at most one parent
• Binary tree
– Tree with 0–2 children per node

Tree Binary Tree


Trees
• Terminology
– Root  no parent
– Leaf  no child
– Interior  non-leaf
– Depth  distance from root to leaf

Root node

Interior Height
nodes

Leaf nodes
Tree
Root

Subtrees

Figure: Tree
Most Important Terminology
• Node A is the parent of node B if node B is a child of
A
• Node A is an ancestor of node B if A is a parent of B,
or if some child of A is an ancestor of B
– In less formal terms, A is an ancestor of B if B is a child of
A, or a child of a child of A, or a child of a child of a child of
A, etc.
• Node B is a descendant of A if A is an ancestor of B
• Nodes A and B are siblings if they have the same
parent
Parts of a binary tree

Binary Tree
Root: A
Nodes with 2 Successors: A, B
Nodes with 1 Successors: C, E
Terminal Nodes: D, F, G
Parts of a binary tree
Binary Tree

Edge: (1, 2), (3, 6) ....

Path: (1, 2, 4), (1, 3, 6)

Branch: (1, 2, 4, 8), (1, 2, 5), (1, 3,


6), (1, 3, 7)

Depth: 3
Left ≠ Right
• The following two binary trees are different:

A A

B B

• In the first binary tree, node A has a left child but no right
child; in the second, node A has a right child but no left child
• Put another way: Left and right are not relative terms
Size and depth
• The size of a binary tree is the
a
number of nodes in it
– This tree has size 12
b c
• The level/depth of a node is
d e f its distance from the root
– a is at level zero
g h i j k – e is at level 2

• The depth of a binary tree is


l
the level of its deepest node
– This tree has depth 4
Types of Binary Trees
• Degenerate – only one child
• Complete/Full – always two children
• Balanced – “mostly” two children
– more formal definitions exist, above are intuitive ideas

Degenerate Balanced Complete


binary tree binary tree binary tree
Complete Binary Tree
 All its level, except possibly the last, have the maximum number of
possible nodes
 All the nodes at the last level appear as far left as possible.

 The depth Dn of the complete binary tree with n nodes,


Dn = Floor ( log2n)

Figure: Complete Binary Tree with Depth 3.


Minimum Number Of Nodes
• Minimum number of nodes in a binary tree whose height is h.
• At least one node at each of first h levels.

minimum number of
nodes is h
Maximum Number Of Nodes
• All possible nodes at first h levels are present.

Maximum number of nodes


= 1 + 2 + 4 + 8 + … + 2h-1
= 2h - 1
Representation of Algebraic Expression Using
Binary Tree
E=((a+ b)* r+w/t)*x

+ x

* /

+ r w t

a b
Binary Tree Representation
• Array representation.
• Linked representation.
Array Representation
• Number the nodes using the numbering
scheme for a full binary tree. The node that is
numbered i is stored in tree[i].

a b c d e f g h i j
Right-Skewed Binary Tree

• An n node binary tree needs an array


whose length is between n+1 and 2n.
Linked Representation

• Each binary tree node is represented as an object whose data type is


BinaryTreeNode.
• The space required by an n node binary tree is n * (space required by one
node).
The Class BinaryTreeNode
Struct BinaryTreeNode
{
char/int data;
BinaryTreeNode *leftChild; // left subtree
BinaryTreeNode *rightChild;// right subtree
};
Picture of a binary tree
The root is
drawn at the a
top

b c

d e f

g h i j k

l
Java Programming Implementation
• A binary tree is composed of zero or more nodes
– In Java, a reference to a binary tree may be null
• Each node contains:
– A value (some sort of data item)
– A reference or pointer to a left child (may be null), and
– A reference or pointer to a right child (may be null)
• A binary tree may be empty (contain no nodes)
• If not empty, a binary tree has a root node
– Every node in the binary tree is reachable from the root node by a
unique path
• A node with no left child and no right child is called a leaf
– In some binary trees, only the leaves contain a value
Binary Tree Traversal
• Many binary tree operations are done by
performing a traversal of the binary tree.
• In a traversal, each element of the binary tree
is visited exactly once.
• During the visit of an element, all action (make
a clone, display, evaluate the operator, etc.)
with respect to this element is taken.
Binary Tree Traversal Methods
• Preorder
• Inorder
• Postorder
• Level order
Tree traversals
• A binary tree is defined recursively: it consists of a root, a
left subtree, and a right subtree
• To traverse (or walk) the binary tree is to visit each node in
the binary tree exactly once
• Tree traversals are naturally recursive
• Since a binary tree has three “parts,” there are six possible
ways to traverse the binary tree:
– root, left, right – root, right, left
– left, root, right – right, root, left
– right, left, root
– left, right, root
Preorder traversal
• In preorder, the root is visited first
• Here’s a preorder traversal to print out all the elements in
the binary tree:

void preorderPrint(BinaryTree bt)


{
if (bt == null) return;
print(bt.value);
preorderPrint(bt.leftChild);
preorderPrint(bt.rightChild);
}
Inorder traversal
• In inorder, the root is visited in the middle
• Here’s an inorder traversal to print out all the elements in
the binary tree:

void inorderPrint(BinaryTree bt) {


if (bt == null) return;
inorderPrint(bt.leftChild);
print(bt.value);
inorderPrint(bt.rightChild);
}
Postorder traversal
• In postorder, the root is visited last
• Here’s a postorder traversal to print out all the elements
in the binary tree:

void postorderPrint(BinaryTree bt) {


if (bt == null) return;
postorderPrint(bt.leftChild);
postorderPrint(bt.rightChild);
print(bt.value);
}
Tree traversals using “flags”
• The order in which the nodes are visited during a tree
traversal can be easily determined by imagining there is a
“flag” attached to each node, as follows:

preorder inorder postorder

To traverse the tree, collect the flags:


A A A

B C B C B C

D E F G D E F G D E F G

ABDECFG DBEAFCG DEBFGCA


Copying a binary tree
• In postorder, the root is visited last
• Here’s a postorder traversal to make a complete copy of a
given binary tree:

BinaryTree copyTree(BinaryTree bt) {


if (bt == null) return null;
BinaryTree left = copyTree(bt.leftChild);
BinaryTree right = copyTree(bt.rightChild);
return new BinaryTree(bt.value, left, right);
}
Other traversals
• The other traversals are the reverse of these three
standard ones
– That is, the right subtree is traversed before the left
subtree is traversed
• Reverse preorder: root, right subtree, left subtree
• Reverse inorder: right subtree, root, left subtree
• Reverse postorder: right subtree, left subtree, root
Application
• Binary Search Tree
• Huffman Coding (Data Compression)
• Priority Queue
• Dynamic Routing Tables Using Simple
Balanced Search Trees
• Expression Evaluation
• Parse Tree
Study Materials
• Horowitz 2.2 : Trees - Binary Tree
• Adam Drozedek : Chapter 6

You might also like