Presentation is loading. Please wait.

Presentation is loading. Please wait.

1 8/16/2015 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.

Similar presentations


Presentation on theme: "1 8/16/2015 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."— Presentation transcript:

1 1 8/16/2015 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.

2 2 8/16/2015 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.

3 3 8/16/2015 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?

4 4 8/16/2015 MATH 224 – Discrete Mathematics A Binary Search Tree 15 3010 5 35 3245 8

5 5 8/16/2015 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 are useful in multicast communication.

6 6 8/16/2015 MATH 224 – Discrete Mathematics Binary Tree Traversal Functions void inorder(node T) if (T ≠ null) { inorder(T.left) print(T.data) ; print(“, ”) inorder(T.right) } fi end inorder a e c d b f g h i j output will be something like d, b, e, a, f, c, g, i, h, j

7 7 8/16/2015 MATH 224 – Discrete Mathematics Binary Tree Traversal Functions void inorder(node T) if (T ≠ null) { inorder(T.left) print(T.data) ; print(“, ”) inorder(T.right) } fi end inorder a e c d b f g h i j T is NULL T is d prints d T is b T is a main calls inorder

8 8 8/16/2015 MATH 224 – Discrete Mathematics Binary Tree Traversal Functions void pre_order(node T) if (T ≠ null) { cout data << “, ” pre_order(T−>left) pre_order(T −>right) } end pre_order a e c d b f g h i j output will be something like a, b, d, e, c, f, g, h, i, j

9 9 8/16/2015 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 data << “, ” } end post_order a e c d b f g h i j output will be something like d, e, b, f, i, j, h, g, c, a

10 10 8/16/2015 MATH 224 – Discrete Mathematics Counting the nodes in a Binary Tree int count(node T) int num = 0 if (T ≠ null) num = 1 + count(T−>left) + count(T− >right) fi return num end count a e c d b f g h i j

11 11 8/16/2015 MATH 224 – Discrete Mathematics The Height of a Binary Tree int height(node T) int ht = −1 if (T ≠ null) ht = 1 + max(height(T−>left), height(T−>right)) fi return ht end height a e c d b f g h i j Called initially at a Then at b Then a d Then at NULL Returns −1 to d from left and right Returns 0 to b from d and from e Returns 1 to a from left. Returns 3 to a from right Returns 4 from a to original caller

12 12 8/16/2015 MATH 224 – Discrete Mathematics Inserting 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 value insert(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?

13 13 8/16/2015 MATH 224 – Discrete Mathematics What Does this Code do? Boolean T_alg(node T, int X) if (T = = null) return FALSE else { print T.value if X = =T.value return TRUE else if T.value > X return T_alg(T.left, X) else return T_alg(T.right X) } //fi } //end T_alg 30 24 45 17 22 32 70 84 75 98 28 26

14 14 8/16/2015 MATH 224 – Discrete Mathematics Counting the Nodes with even Integers in a Binary Tree int even_count(node T) int num = 0 if (T ≠ null) num = (1 - T.data%2) + even_count(T−>left) + even_count(T− >right) fi return num end even_count 15 8 4 31 20 6 3 9 5 2

15 15 8/16/2015 MATH 224 – Discrete Mathematics What does cnt return when given a Binary Tree int cnt(node T) int num = 0 if (T ≠ null) { num = cnt(T−>left) + cnt(T− >right) if (num = = 0) num = 1 fi }fi return num end even_count 15 8 4 31 20 6 3 9 5 2


Download ppt "1 8/16/2015 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."

Similar presentations


Ads by Google