Complete Binary Trees -...

Post on 10-Jul-2018

216 views 0 download

Transcript of Complete Binary Trees -...

Binary Trees

Binary Trees

● A binary tree has nodes, similar to nodes in a linked list structure.

● Data of one sort or another may be stored at each node.

● But it is the connections between the nodes which characterize a binary tree.

Binary Trees

● A binary tree has nodes, similar to nodes in a linked list structure.

● Data of one sort or another may be stored at each node.

● But it is the connections between the nodes which characterize a binary tree.

An example canillustrate how theconnections work

A Binary Tree of States

In this example, the data contained at each node is one of the 50 states.

A Binary Tree of States

Each tree has a special node called its root, usually drawn at the top.

A Binary Tree of States

Each tree has a special node called its root, usually drawn at the top. The example tree

has Washingtonas its root.

A Binary Tree of States

Each node is permitted to have two links to other nodes, called the left child and the right child.

A Binary Tree of States

Each node is permitted to have two links to other nodes, called the left child and the right child.

A Binary Tree of States

Children are usually drawn below a node.

The right child ofWashington is

Colorado.

The left child ofWashington is

Arkansas.

A Binary Tree of States

Some nodes have only one child.

Arkansas has aleft child, but no

right child.

A Binary Tree of States

A node with no children is called a leaf.

A Binary Tree of States

Each node is called the parent of its children.

Washington is theparent of Arkansas

and Colorado.

A Binary Tree of States

Two rules about parents:

The root has no parent.

Every other node has exactly one parent.

A Binary Tree of States

Two nodes with the same parent are called siblings.

Arkansasand Coloradoare siblings.

Complete Binary Trees

A complete binary tree is a special kind of binary tree which will be useful to us.

Complete Binary Trees

A complete binary tree is a special kind of binary tree which will be useful to us.

When a completebinary tree is built,

its first node must bethe root.

Complete Binary Trees

The second node of a complete binary tree is always the left child of the root...

Complete Binary Trees

The second node of a complete binary tree is always the left child of the root...

... and the third node is always the right child of the root.

Complete Binary Trees

The next nodes must always fill the next level from left to right.

Complete Binary Trees

The next nodes must always fill the next level from left to right.

Complete Binary Trees

The next nodes must always fill the next level from left to right.

Complete Binary Trees

The next nodes must always fill the next level from left to right.

Complete Binary Trees

The next nodes must always fill the next level from left to right.

Complete Binary Trees

The next nodes must always fill the next level from left to right.

Implementing a Complete Binary Tree

● We will store the date from the nodes in a partially-filled array.

An array of dataWe don't care what's inthis part of the array.

An integer to keeptrack of how many nodes are in the tree

3

Implementing a Complete Binary Tree

● Data from root – always at index 0● If data from a non-root node is at index i

– Data for parent is at index (i-1)/2

– Data for children (if they exist) are at indices 2i+1 & 2i+2

● Very easy to parent from children & vice-versa● Could use static or dynamic array or STL vector

General Binary Trees

● Finite set of nodes– Root – special node

– Up to 2 children

– Each node – only 1 parent – except root which has no parent

● Ancestor– Node's parent – first ancestor

– Parent of parent is next ancestor

– Root is ancestor of every other node

General Binary Trees

● Descendant– Node's children are first descendants

– Children's children are next descendants

● Subtree– Any node in a tree can be viewed as a root of a new

tree – called subtree

● Depth of a node – Number of “steps” up tree from node to root

General Binary Trees

● Leaf – node with no children● Depth of a tree – maximum depth of any of its

leaves● Full binary tree – every leaf has the same depth

General Trees

● Finite set of nodes● Special node – root● Each node – may be associated with one or more

nodes – children● Each node has exactly 1 parent – except root

Tree Representations

● Array representation of complete binary trees● Node representation of binary trees

Tree Traversals

● Traversal – visit every node once● Binary trees

– Depth first traversals – difference is the order that the node, left child, right child are visited

● Pre-order● In-order● Post-order● Backward pre-order● Backward in-order● Backward post-order

– Breadth first traversals● Forward● backwards

Traversals

● Traversals are frequently used● Do not want to rewrite traversal for every usage● Pass in usage (function) as an argument to traversal

function

Function Parameters

● Parameter to a function may be a function● Parameter declared by writing return type the

function name and then list of parameter types in parentheses

– void foo (void f (int&), ....)

– Actual argument – any function with that signature

Template Function Parameters

void do_it (void f(int&), int data[], size_t n)

{

for (size_t i = 0; i < n; ++i)

f(data[i]);

}● f is applied to every element in the array● Can generalize to arrays of any type

template <class Item, class SizeType>

void do_it (void f(Item&), Item data[], SizeType n)

{

for (SizeType i = 0; i < n; ++i)

f(data[i]);

}

Further Generalization

● Restricted as to signature of function– Want a different function signature – need to

construct a new templatetemplate <class Process, class Item, class SizeType>

void do_it (Process f, Item data[], SizeType n)

{

for (SizeType i = 0; i < n; ++i)

f(data[i]);

}● Process – type of first argument (function)

THE END

Presentation copyright 2010 Addison Wesley Longman,For use with Data Structures and Other Objects Using Javaby Michael Main.

Some artwork in the presentation is used with permission from Presentation Task Force(copyright New Vision Technologies Inc) and Corel Gallery Clipart Catalog (copyrightCorel Corporation, 3G Graphics Inc, Archive Arts, Cartesia Software, Image ClubGraphics Inc, One Mile Up Inc, TechPool Studios, Totem Graphics Inc).

Students and instructors who use Data Structures and Other Objects Using C++ are welcometo use this presentation however they see fit, so long as this copyright notice remainsintact.