Presentation is loading. Please wait.

Presentation is loading. Please wait.

ECE 103 Engineering Programming Chapter 64 Tree Implementation

Similar presentations


Presentation on theme: "ECE 103 Engineering Programming Chapter 64 Tree Implementation"— Presentation transcript:

1 ECE 103 Engineering Programming Chapter 64 Tree Implementation
Herbert G. Mayer, PSU CS Status 6/4/2014 Initial content copied verbatim from ECE 103 material developed by Professor Phillip PSU ECE

2 Syllabus Pointer Version

3 Tree : Pointer Version A binary sort tree is created using pointers to nodes. Nodes are created at runtime using malloc(). 2

4 Define structure of tree element
struct tree_node { int value; /* Node value */ struct tree_node *left; /* Pointer to left child node */ struct tree_node *right; /* Pointer to right child node */ }; typedef struct tree_node Node; 3

5 Binary sort tree 4 tree value left right value left … right value left

6 Create the tree 5 int main (void) {
Node *tree = NULL; /* Pointer to tree */ int rvalue; /* Random value */ int k; /* Loop index */ srand(time(NULL)); /* Initialize random seed */ /* Build the tree with randomly generated values */ printf("Original values: "); for (k = 0; k < 10; k++) rvalue = rand() % ; /* 1 to 100 */ printf("%d ", rvalue); insert_node(&tree, rvalue); } /* Show sorted list of values */ printf("\n\nSorted values: "); display_inorder(tree); return 0; 5

7 Create a new tree node 6 Node * create_node (int num) {
Node *p; /* Work pointer */ /* Use run-time memory allocation to create new node */ if ((p = (Node *) malloc(sizeof(Node))) == NULL) printf("ERROR: Unable to allocate memory for node\n"); exit(1); } /* Initialize contents of new node */ p->value = num; p->left = NULL; p->right = NULL; return p; /* Return pointer to newly created node */ 6

8 Insert a new node in the tree
void insert_node (Node **tree, int value) { /* The value is sorted as it is placed in the binary tree */ if (*tree == NULL) /* No more children, so insert here */ *tree = create_node(value); else if (value <= (*tree)->value) /* Traverse left branch */ insert_node(&(*tree)->left, value); else /* Traverse right branch */ insert_node(&(*tree)->right, value); } 7

9 Display the contents of the entire tree
void display_inorder (Node *tree) { /* Use inorder recursion */ if (tree->left != NULL) display_inorder(tree->left); printf("%d ", tree->value); if (tree->right != NULL) display_inorder(tree->right); } 8

10 Example: 9 Pre-order traversal: display node traverse(left)
traverse(right) Display order: In-order traversal: Post-order traversal: Sample binary tree 8 6 79 64 86 56 39 13 46 42 tree Original order of input values: 9


Download ppt "ECE 103 Engineering Programming Chapter 64 Tree Implementation"

Similar presentations


Ads by Google