0% found this document useful (0 votes)
49 views22 pages

L5 Trees

1. Binary trees can be used to represent hierarchical or tree-like data structures. They consist of nodes where each node has at most two child nodes. 2. A binary tree has internal nodes and leaf nodes. The root is the topmost node. The height of a node is the longest path to a leaf, and the depth is the path to the root. 3. Full, complete, and perfect binary trees have specific structures where all nodes have either 0 or 2 children (full), and the bottom levels are completely filled out (complete/perfect).

Uploaded by

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

L5 Trees

1. Binary trees can be used to represent hierarchical or tree-like data structures. They consist of nodes where each node has at most two child nodes. 2. A binary tree has internal nodes and leaf nodes. The root is the topmost node. The height of a node is the longest path to a leaf, and the depth is the path to the root. 3. Full, complete, and perfect binary trees have specific structures where all nodes have either 0 or 2 children (full), and the bottom levels are completely filled out (complete/perfect).

Uploaded by

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

Trees

CMSC 420: Lecture 5

Hierarchies
Many ways to represent tree-like information:
A B D E F C G

linked hierarchy

I. A 1. B a. D i. E b. F 2. C a. G

outlines, indentations

A E D G C F B

(((E):D), F):B, (G):C):A nested, labeled parenthesis nested sets

Denition Rooted Tree

! is a tree If T1, T2, ..., Tk are trees with roots r1, r2, ..., rk and r is a node ! any Ti, then the structure that consists of the Ti, node r, and edges (r, ri) is also a tree. r3 r2 r4 T3 r1 r2 r r3 r4

r1 T1

T4

T2

Terminology

r is the parent of its children r1, r2, ..., rk. r1, r2, ..., rk are siblings. root = distinguished node, usually drawn at top. Has no parent. If all children of a node are !, the node is a leaf. Otherwise, the node is a internal node. A path in the tree is a sequence of nodes u1, u2, ..., um such that each of the edges (u, ui+1) exists. A node u is an ancestor of v if there is a path from u to v. A node u is a descendant of v if there is a path from v to u.

root internal node

path from root to w parent of w

children of u (they are siblings)

w
leaves

Height & Depth



The height of node u is the length of the longest path from u to a leaf. The depth of node u is the length of the path from the root to u. Height of the tree = maximum depth of its nodes. A level is the set of all nodes at the same depth.

Depth = 0 Depth = 1 Depth = 2 Depth = 3 0 1 0

3 2 0 0 1 0 0

Numbers in nodes give heights

Subtrees, forests, and graphs

A subtree rooted at u is the tree formed from u and all its descendants. A forest is a (possibly empty) set of trees. The set of subtrees rooted at the children of r form a forest. As weve dened them, trees are not a special case of graphs:

Our trees are oriented (there is a root which implicitly denes directions on the edges). A free tree is a connected graph with no cycles.

Alternative Denition Rooted Tree

A tree is a nite set T such that:

one element r " T is designated the root. the remaining nodes are partitioned into k ! 0 disjoint sets T1, T2, ..., Tk, each of which is a tree.

This denition emphasizes the partitioning aspect of trees: As we move down the were dividing the set of elements into more and more parts. Each part has a distinguished element (that can represent it).

Basic Properties

Every node except the root has exactly one parent.

A tree with n nodes has n-1 edges (every node except the root has an edge to its parent).

There is exactly one path from the root to each node. (Suppose there were 2 paths, then some node along the 2 paths would have 2 parents.)

Binary Trees !Denition

An ordered tree is a tree for which the order of the children of each node is considered important.
r r

r1

r2

r3

r4

"

r4

r3

r1

r2

A binary tree is an ordered tree such that each node has ! 2 children. Call these two children the left and right children.

Example Binary Trees


The edge cases: ! Empty Binary Tree

Only left child

Only right child

Single node

Small binary tree:

Extended Binary Trees

Replace each missing child with external node Do you need a special ag to tell which nodes are external? Binary tree Every internal node has exactly 2 children. Every leaf (external node) has exactly 0 children. Each external node corresponds to one ! in the original tree lets us distinguish different instances of !. Extended binary tree

# of External Nodes in Extended Binary Trees


Thm. An extended binary tree with n internal nodes has n+1 external nodes. Proof. By induction on n. X(n) := number of external nodes in binary tree with n internal nodes. Base case: X(0) = 1 = n + 1. Induction step: Suppose theorem is true for all i < n. Because n # 1, we have: Extended binary tree X(n) $= X(k) + X(n-k-1) $ = k+1 + n-k-1 + 1 $ =n+1
n-k-1 nodes k nodes (for some 0 ! k < n)

Related to Thm 5.2 in your book.

Alternative Proof
Thm. An extended binary tree with n internal nodes has n+1 external nodes.

Proof. Every node has 2 children pointers, for a total of 2n pointers. Every node except the root has a parent, for a total of n - 1 nodes with parents. These n - 1 parented nodes are all children, and each takes up 1 child pointer. (pointers) - (used child pointers) = (unused child pointers) 2n - (n-1) = n + 1 Thus, there are n + 1 null pointers. Every null pointer corresponds to one external node by construction.

Full and Complete Binary Trees



If every node has either 0 or 2 children, a binary tree is called full. If the lowest d-1 levels of a binary tree of height d are lled and level d is partially lled from left to right, the tree is called complete. If all d levels of a height-d binary tree are lled, the tree is called perfect.

full

complete

perfect

# Nodes in a Perfect Tree of Height h


Thm. A perfect tree of height h has 2h+1 - 1 nodes.
Proof. By induction on h. Let N(h) be number of nodes in a perfect tree of height h. Base case: when h = 0, tree is a single node. N(0) = 1 = 20+1 - 1. Induction step: Assume N(i) = 2i+1 - 1 for 0 ! i < h. A perfect binary tree of height h consists of 2 perfect binary trees of height h-1 plus the root: N(h) $= 2 % N(h - 1) + 1 $ = 2 % (2h-1+1 - 1) + 1 $ = 2 % 2h - 2 + 1 $ = 2h+1 - 1

2h are leaves 2h - 1 are internal nodes

Full Binary Tree Theorem


Thm. In a non-empty, full binary tree, the number of internal nodes is always 1 less than the number of leaves. Proof. By induction on n. L(n) := number of leaves in a non-empty, full tree of n internal nodes. Base case: L(0) = 1 = n + 1. Induction step: Assume L(i) = i + 1 for i < n. Given T with n internal nodes, remove two sibling leaves. T has n-1 internal nodes, and by induction hypothesis, L(n-1) = n leaves. Replace removed leaves to return to tree T. Turns a leaf into an internal node, adds two new leaves. Thus: L(n) = n + 2 - 1 = n + 1. Thm 5.1 in your book.

Array Implementation for Complete Binary Trees


A

1
B

2
E F

3
G Mapping of nodes to integers

4
I J

A B C D E
1 2 3 4 5

F G H
6 7 8

I
9

J
10

K L M
11 12 13 14 15

left(i): 2i if 2i ! n otherwise 0 right(i): (2i + 1) if 2i + 1 ! n otherwise 0 parent(i): #i/2$ if i # 2 otherwise 0

Binary Tree ADT


A tree can be represented as a linked collection of its nodes: template <class ValType> class BinaryTree { public: virtual ValType & value() = 0; virtual void set_value(const ValType &) = 0; virtual BinaryTree * left() const = 0; virtual void set_left(BinNode *) = 0; virtual BinaryTree * right() const = 0; virtual void set_right(BinNode *) = 0; virtual bool is_leaf() = 0; }; virtual % this function can be overridden by subclassing. = 0 % a pure function with no implementation. Must subclass to get implementation.

Linked Binary Tree Implementation


template <class ValType> class BinNode : public BinaryTree<ValType> { public: BinNode(ValType * v); ~BinNode(); ValType & value(); void set_value(const ValType&); BinNode * left() const; void set_left(BinNode *); BinNode * right() const; void set_right(BinNode *); bool is_leaf(); private: ValType * _data; BinNode<ValType> * _left_child; BinNode<ValType> * _right_child; }; _data _left_child _right_child

Binary Tree Representation


_data _left_child _right_child

_data _left_child _right_child

_data _left_child _right_child

0
_data _left_child _right_child _data _left_child _right_child

List Representation of General Trees


A

A children
Child next Child next Child 0

D children C children B children


Child next Child next Child 0 Child 0 Child 0

Representing General Trees with Binary Trees


A A

General K-ary Tree Each node represented by:

Representation as Binary Tree


_data _rst_child _right_sibling

How would you implement an ordered general tree using a binary tree?

You might also like