1 1/6/2016 math 224 – discrete mathematics a rooted tree is a tree that has a distinguished node...

13
1 08/27/22 MATH 224 – Discrete Mathematics A rooted tree is a tree that has a distinguished node called the root. Just as with all trees a rooted tree is acyclic (no cycles) and connected. Rooted trees have many applications in computer science, for example the binary search tree. Rooted Trees The root is typically drawn at the top. Children of the root. Grandchildren of the root and leaf nodes.

Upload: joel-reed

Post on 19-Jan-2016

216 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: 1 1/6/2016 MATH 224 – Discrete Mathematics A rooted tree is a tree that has a distinguished node called the root. Just as with all trees a rooted tree

104/21/23

MATH 224 – Discrete Mathematics

A rooted tree is a tree that has a distinguished node called the root. Just as with all trees a rooted tree is acyclic (no cycles) and connected. Rooted trees have many applications in computer science, for example the binary search tree.

Rooted Trees

The root is typically drawn at the top.

Children of the root.

Grandchildren of the root and leaf nodes.

Page 2: 1 1/6/2016 MATH 224 – Discrete Mathematics A rooted tree is a tree that has a distinguished node called the root. Just as with all trees a rooted tree

204/21/23

MATH 224 – Discrete Mathematics

A Binary tree is a rooted tree where no node has more than two children. As shown in the previous slide all nodes, except for leaf nodes, have children and some have grandchildren. All nodes except the root have a parent and some have a grandparent and ancestors. A node has at most one parent and at most one grandparent.

Rooted Binary Trees

The root of a binary tree at level 4 also height 4 and depth 0.

Nodes with only 1 child at level 2 and depth 2.

Nodes a level 1, and depth 3.

Nodes at level 3 and depth 1.

Nodes with no children are called leaf nodes.

Nodes a level 0, and depth 4.

Page 3: 1 1/6/2016 MATH 224 – Discrete Mathematics A rooted tree is a tree that has a distinguished node called the root. Just as with all trees a rooted tree

304/21/23

MATH 224 – Discrete Mathematics

A Balanced tree is a rooted tree where the leaf nodes have depths that vary by no more than one. In other words, the depth of a leaf node is either equal to the height of the tree or one less than the height. All of the trees below are balanced.

Balanced Trees

What are the heights of each of these trees?

Page 4: 1 1/6/2016 MATH 224 – Discrete Mathematics A rooted tree is a tree that has a distinguished node called the root. Just as with all trees a rooted tree

404/21/23

MATH 224 – Discrete Mathematics

A Binary Search Tree

15

3010

5 35

32 458

Page 5: 1 1/6/2016 MATH 224 – Discrete Mathematics A rooted tree is a tree that has a distinguished node called the root. Just as with all trees a rooted tree

504/21/23

MATH 224 – Discrete Mathematics

Some Tree Applications

Binary Search Trees to store items for easy retrieval, insertion and deletion. For balanced trees, each of these steps takes lg(N) time for an N node tree.

Variations of the binary search tree include, the AVL tree, Red-Black tree and the B-tree. These are all designed to keep the tree nearly balanced. The first two are binary trees while the B-tree has more than two children for each internal node.

Game trees are used extensively in AI. The text has a simple example of a tic-tac-toe tree on Page 654.

Huffman trees are used to compress data. They are most commonly used to compress faxes before transmission.

Spanning trees are subgraphs that have applications to computer and telephone networks. Minimum spanning trees are of special interest.

Steiner trees are a generalization of the spanning tree with in multicast communication.

Page 6: 1 1/6/2016 MATH 224 – Discrete Mathematics A rooted tree is a tree that has a distinguished node called the root. Just as with all trees a rooted tree

604/21/23

MATH 224 – Discrete Mathematics

Binary Tree Traversal Functionsvoid inorder(node T)

if (T ≠ null) {inorder(T−>left)cout << T − >data << “, ”inorder(T − >right)

} fiend inorder

a

e

c

d

b

f g

h

i joutput will be something like

d, b, e, a, f, c, g, i, h, j

Page 7: 1 1/6/2016 MATH 224 – Discrete Mathematics A rooted tree is a tree that has a distinguished node called the root. Just as with all trees a rooted tree

704/21/23

MATH 224 – Discrete Mathematics

Binary Tree Traversal Functionsvoid inorder(node T)

if (T ≠ null) {inorder(T−>left)cout << T − >data << “, ”inorder(T − >right)

} fiend inorder

a

e

c

d

b

f g

h

i j

T is NULL

T is dprints d

T is b

T is a

main calls

inorder

Page 8: 1 1/6/2016 MATH 224 – Discrete Mathematics A rooted tree is a tree that has a distinguished node called the root. Just as with all trees a rooted tree

804/21/23

MATH 224 – Discrete Mathematics

Binary Tree Traversal Functions

void pre_order(node T)if (T ≠ null) {

cout << T −>data << “, ” pre_order(T−>left)pre_order(T −>right)

} end pre_order

a

e

c

d

b

f g

h

i joutput will be something like

a, b, d, e, c, f, g, h, i, j

Page 9: 1 1/6/2016 MATH 224 – Discrete Mathematics A rooted tree is a tree that has a distinguished node called the root. Just as with all trees a rooted tree

904/21/23

MATH 224 – Discrete Mathematics

Binary Tree Traversal Functions

void post_order(node T)if (T ≠ null) {

post_order(T−>left)post_order(T − >right) cout << T − >data << “, ”

} end post_order

a

e

c

d

b

f g

h

i joutput will be something like

d, e, b, f, i, j, h, g, c, a

Page 10: 1 1/6/2016 MATH 224 – Discrete Mathematics A rooted tree is a tree that has a distinguished node called the root. Just as with all trees a rooted tree

1004/21/23

MATH 224 – Discrete MathematicsCounting the nodes in a Binary Tree

int count(node T)int num = 0if (T ≠ null)

num = 1 + count(T−>left) + count(T− >right)fireturn num

end count

a

e

c

d

b

f g

h

i j

Page 11: 1 1/6/2016 MATH 224 – Discrete Mathematics A rooted tree is a tree that has a distinguished node called the root. Just as with all trees a rooted tree

1104/21/23

MATH 224 – Discrete MathematicsThe Height of a Binary Tree

int height(node T)int ht = −1if (T ≠ null)

ht = 1 + max(height(T−>left), height(T−>right))fireturn ht

end heighta

e

c

d

b

f g

h

i j

Called initially at aThen at bThen a dThen at NULLReturns −1 to d from left and rightReturns 0 to b from d and from eReturns 1 to a from left.Returns 3 to a from right Returns 4 from a to original caller

Page 12: 1 1/6/2016 MATH 224 – Discrete Mathematics A rooted tree is a tree that has a distinguished node called the root. Just as with all trees a rooted tree

1204/21/23

MATH 224 – Discrete MathematicsInserting into a Binary Search Tree

// Note that T is passed by reference insert(node & T, int X)

if (T = = null)T = node(X)

else if X < T−>valueinsert(T −>left, X)

else insert(T −>right, X)

fi end height

30

24

45

17

22

32 70

84

75 98

Where would 60 be inserted?

If the original value for T is the node containing 30, where is the first recursive call, the second etc?

Where would −10 be inserted?

Page 13: 1 1/6/2016 MATH 224 – Discrete Mathematics A rooted tree is a tree that has a distinguished node called the root. Just as with all trees a rooted tree

1304/21/23

MATH 224 – Discrete MathematicsWhat Does this Code do?

Boolean T_alg(node T, int X) if (T = = null)

return FALSE else {

print T.valueif X = =T.value return TRUEelse if T.value < X return T_alg(T.left, X)else return T_alg(T.right x)} //fi

} //fi } //end T_alg

30

24

45

17

22

32 70

84

75 98

28

26