Chapter 6 Binary Trees. 6.1 Trees, Binary Trees, and Binary Search Trees Linked lists usually are...
Preview:
Citation preview
- Slide 1
- Chapter 6 Binary Trees
- Slide 2
- 6.1 Trees, Binary Trees, and Binary Search Trees Linked lists
usually are more flexible than arrays, but it is difficult to use
them to organize a hierarchical representation of objects. Stacks
and queues reflect some hierarchy but are limited to only one
dimension. For these reasons, create a new data type tree that
consists of nodes and arcs/edges and has the root at the top and
the leaves (terminal nodes) at the bottom. Tree Representation Tree
generally implemented in the computer using pointers
- Slide 3
- Tree Terminology / concepts Path : a unique sequence of arcs or
the resulting sequence of nodes. Root : the node at the top of the
tree. (one node / one path) Leaf : a node that has no children.
Subtree : any node can be considered to be the root of a subtree,
which consists of its children, and its children's children, and so
on. Level of the node : The length of the path from the root to the
node. Level of a node is its distance from the root.
- Slide 4
- Parent : Any node (except the root) has exactly one edge
running upward to another node.. It has a successor node Child :
Any node can have one or more lines running downward to other
nodes. It has a predecessor node Siblings :Two or more nodes with
the same parent Ancestor : Any node in the path from the root to
the node Descendent : Any node in the path below the parent node
All nodes in the paths from a given node to a leaf node Tree
Terminology cont
- Slide 5
- Length : the number of arcs in a path. Height of non empty tree
: the maximum level of a node in the tree. Is the level of the leaf
in the longest path from the root + 1 The height of an empty tree
is -1 Depth == Height Visiting : a node is visited when program
control arrives at the node, usually for the purpose of carrying
out some operation on the node. Traversing : to visit all the nodes
in some specified order. Key : a value that is used to search for
the item or perform other operations on it.
- Slide 6
- Slide 7
- Slide 8
- 8 A BEF CDGIH Subtree B Root of Subtree I
- Slide 9
- Binary Tree It is a tree whose nodes have two children
(possibly empty), and each child is designed as either a left child
or a right child. If it has 2 i nodes at each level i+1, it is
called complete binary tree: all nonterminal nodes have both their
children and all leaves are at the same level. The binary search
tree : Also called ordered binary trees For each node n, all values
stored in its left subtree are less than value v stored in n, and
all values stored in the right subtree are greater than v.
- Slide 10
- Examples of binary trees
- Slide 11
- Why tree / binary tree ? An ordered array is quick in search
using binary search, but it is slow in insertion and deleting nodes
Linked list is quick in insertion and deletion but slow in
searching So, you may use a tree because it combines the advantages
of the other two structures: an ordered array and a linked list.
6.2 Implementing Binary Tree
- Slide 12
- Binary tree can be implemented as : 1. A linked list. 2. An
Array. Declare a node as a structure with an information field and
two pointers fields. However, it may has problems when deleting and
inserting nodes
- Slide 13
- Slide 14
- 6.3 Searching a Binary Search Tree For every node, compare the
key to be located with the value stored in the node currently
pointed at. 1. If key is less than the value, go to the left
subtree and try again. 2. If it is greater than that value, try the
right subtree. 3. If it is the same, the search stops. 4. The
search is aborted if there is no way to go the key is not in the
tree.
- Slide 15
- Slide 16
- The complexity of searching is measured by the number of
comparisons performed. This number depends on the number of nodes
encountered on the unique path leading from the root to the node
being searched for. So, the complexity is the length of the path
leading to this node plus 1. Complexity depends on 1. The shape of
the tree. 2. The position of the node in the tree.
- Slide 17
- Unbalanced Trees Some of the trees are unbalanced, that is,
they have most of their nodes on one side of the root or the other.
Individual subtrees may also be unbalanced.
- Slide 18
- 1.Finding a Node Finding a node with a specific key is the
simplest of the major tree operations. Remember that the nodes in a
binary search tree correspond to objects containing information,
one of them can be considered as a key.
- Slide 19
- Efficiency of the Find Operation How long it takes to find a
node depends on how many levels down it is situated. For example,
there can be up to 31 nodes, but no more than 5 levels. Thus you
can find any node using a maximum of only 5 comparisons. This is
O(log N) time.
- Slide 20
- 2.Inserting a Node 1. Find the place to insert it. This is much
the same process as trying to find a node which turns out not to
exist. 2. Follow the path from the root to the appropriate node,
which will be the parent of the new node. 3. After this parent is
found, the new node is connected as its left or right child,
depending on whether the new node's key is less or greater than
that of the parent.
- Slide 21
- Slide 22
- 3.Deleting a Node Deleting a node is the most complicated
common operation required for binary search trees. However,
deletion is important in many tree applications. There are three
cases to consider:- 1- The node to be deleted is a leaf node (has
no children). 2- The node to be deleted has one child. 3- The node
to be deleted has two children.
- Slide 23
- Case1 : The node to be deleted has no children To delete a leaf
node, change the appropriate child field in the node's parent to
point to null, instead of to the node.
- Slide 24
- Case 2 : The node to be deleted has one child The node has only
two connections: to its parent and to its only child. You want to
"snip" the node out of this sequence by connecting its parent
directly to its child.
- Slide 25
- Case 3 : The node to be deleted has two children If the deleted
node has two children, you can't just replace it with one of these
children, at least if the child has its own children. To delete a
node with two children, replace the node with its in order
successor.
- Slide 26
- Slide 27
- 4.Finding Maximum and Minimum values For the minimum, go to the
left child of the root; then go to the left child of that child,
and so on, until you come to a node that has no left child. This
node is the minimum:
- Slide 28
- For the maximum value in the tree, follow the same procedure,
but go from right child to right child until you find a node with
no right child. This node is the maximum.
- Slide 29
- Summary Trees consist of nodes (circles) connected by edges
(lines). The root is the topmost node in a tree; it has no parent.
In a binary tree, a node has at most two children. In a binary
search tree, all the nodes that are left descendants of node A have
key values less than A; all the nodes that are As right descendants
have key values greater than (or equal to) A. Trees perform
searches, insertions, and deletions in O(log N) time. Nodes
represent the data-objects being stored in the tree. Edges are most
commonly represented in a program by pointers to a node's children
(and sometimes to its parent).
- Slide 30
- An unbalanced tree is one whose root has many more left
descendents than right descendants, or vice versa. Searching for a
node involves comparing the value to be found with the key value of
a node, and going to that node's left child if the key search value
is less, or to the nodes right child if the search value is
greater. Insertion involves finding the place to insert the new
node, and then changing a child data member in its new parent to
refer to it. Summary (cont)