* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
Download tree
Survey
Document related concepts
Transcript
Trees A non-linear implementation for collection classes Linear structures Arrays and linked lists are linear: Obvious first and last elements Obvious order for traversal Non-linear structures Other organizations are possible, (e.g., file organization on disk is a tree) c: \drivers \documents and settings \adobe \program files \canon May be more efficient No obvious first and last elements No obvious order for traversal \google Tree as graph Connected graph with n nodes and n-1 edges -> no cycles Rooted tree – any root -directed edges -one node is root -all nodes accessible from root -root has indegree 0 -leaf nodes have outdegree 0 -branch nodes have in and out edges Relative terminology Relative to a node •Parent node •Ancestors •Child node •Descendents •Sibling node Measuring location by path length Depth (from root) 2 Height (above deepest descendent) 2 Recursive definition of list Empty list (0 nodes) OR Head node and 0 or 1 non-empty sublist Recursive definition of list Empty list (0 nodes) OR Head node and 0 or 1 non-empty sublist Recursive definition of tree •Empty tree (0 nodes) OR •Root node and 0 or more non-empty subtrees (child node and its descendents) Recursive definition of tree Tree application – file system Directory structure is tree rooted at / (Windows explorer) A Unix directory Data Structures & Problem Solving using JAVA/2E Mark Allen Weiss © 2002 Addison Wesley The Unix directory with file counts Task: count total files (in parentheses at each node) Data Structures & Problem Solving using JAVA/2E Mark Allen Weiss © 2002 Addison Wesley The Unix directory with file counts Task: count total files (in parentheses at each node) recursively Data Structures & Problem Solving using JAVA/2E Mark Allen Weiss © 2002 Addison Wesley Number of files in subtrees Data Structures & Problem Solving using JAVA/2E Mark Allen Weiss © 2002 Addison Wesley Number of files in subtrees 52 41 17 11 8 12 3 Data Structures & Problem Solving using JAVA/2E 4 Mark Allen Weiss © 2002 Addison Wesley Traversal: how to organize activity on all nodes in a collection? • List – process sequentially by 1. iteration 2. recursion Traversal: how to organize activity on all nodes in a collection? • Tree – no obvious order to process ? Traversal of trees Problem: how to visit all nodes; what order to visit: Many traversals for different purposes: •Breadth first •Depth first •Preorder, postorder (recursive) •…more Preorder Traversal Recursive definition: Visit root before children 1. Visit root 2. Visit subtrees (left to right) Preorder Traversal Recursive definition: Visit root before children 1 2 1. Visit root 2. Visit subtrees (left to right) 4 3 5 6 7 8 9 11 10 Recursive definition of tree Postorder Traversal Recursive definition: Visit root after children 1. Visit subtrees (left to right) 2. Visit root Postorder Traversal 11 Recursive definition: Visit root after children 2 1. Visit subtrees (left to right) 2. Visit root 3 1 10 4 8 6 5 9 7 Traversal examples W R I T S F D O C A B X U P E Implementing trees • List – Node – data & reference • Tree – Node – data & references class ListNode {int data; ListNode next; } class TreeNode {int data; TreeNode child1, child2, child3; } Implementing trees Problem of representing a node: How many edges to allow for? e.g., Class TreeNode { int data; TreeNode child1, child2, child3; } Implementing trees Problem of representing a node: Three solutions: 1. allow lots of child edge references 2. restrict tree structure to two child edges 3. use first child/next sibling representation First child/next sibling Class TreeNode { int data; TreeNode child, sibling; } Problem: Makes path to most nodes longer Binary Trees result – for many purposes, two references are sufficient class BNode binary trees with { -left child int data; BNode left, -right child right; }