Binary trees יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015.

Slides:



Advertisements
Similar presentations
Senem Kumova Metin Spring2009 BINARY TREES && TREE TRAVERSALS Chapter 10 in A Book on C.
Advertisements

Computer Science C++ High School Level By Guillermo Moreno.
Binary Trees, Binary Search Trees CMPS 2133 Spring 2008.
Binary Trees, Binary Search Trees COMP171 Fall 2006.
CS 171: Introduction to Computer Science II
Lists A list is a finite, ordered sequence of data items. Two Implementations –Arrays –Linked Lists.
CS 104 Introduction to Computer Science and Graphics Problems Data Structure & Algorithms (4) Data Structures 11/18/2008 Yang Song.
Introduction to Data Structure, Fall 2006 Slide- 1 California State University, Fresno Introduction to Data Structure Chapter 10 Ming Li Department of.
© 2006 Pearson Addison-Wesley. All rights reserved11 A-1 Chapter 11 Trees.
Lecture 21 Trees. “ A useful data structure for many applications”
CS21, Tia Newhall Binary Search Trees (BST) 1.Hierarchical data structure with a single pointer to root node 2.Each node has at most two child nodes (a.
BINARY TREES && TREE TRAVERSALS. DEFINITION : Binary Tree A binary tree is made of nodes Each node contains –a "left" pointer -- left child –a "right"
Lecture 17 Non-Linear data structures Richard Gesick.
S EARCHING AND T REES COMP1927 Computing 15s1 Sedgewick Chapters 5, 12.
1 Trees A tree is a data structure used to represent different kinds of data and help solve a number of algorithmic problems Game trees (i.e., chess ),
Tree (new ADT) Terminology:  A tree is a collection of elements (nodes)  Each node may have 0 or more successors (called children)  How many does a.
Binary Trees, Binary Search Trees RIZWAN REHMAN CENTRE FOR COMPUTER STUDIES DIBRUGARH UNIVERSITY.
Binary Trees Definition A binary tree is: (i) empty, or (ii) a node whose left and right children are binary trees typedef struct Node Node; struct Node.
Computer Science: A Structured Programming Approach Using C Trees Trees are used extensively in computer science to represent algebraic formulas;
Preview  Graph  Tree Binary Tree Binary Search Tree Binary Search Tree Property Binary Search Tree functions  In-order walk  Pre-order walk  Post-order.
CS-2852 Data Structures LECTURE 11 Andrew J. Wozniewicz Image copyright © 2010 andyjphoto.com.
Trees Isaac Sheff. Nodes Building blocks of trees “Parent” node may have “Child” nodes Can be both parent and child Can’t be its own ancestor Can’t have.
Binary Trees In computer science, a binary tree is a tree data structure in which each node has at most two children, which are referred to as the left.
Min Chen School of Computer Science and Engineering Seoul National University Data Structure: Chapter 6.
Trees By P.Naga Srinivasu M.tech,(MBA). Basic Tree Concepts A tree consists of finite set of elements, called nodes, and a finite set of directed lines.
Discrete Mathematics Chapter 5 Trees.
CMSC 341 Introduction to Trees. 2/21/20062 Tree ADT Tree definition –A tree is a set of nodes which may be empty –If not empty, then there is a distinguished.
CISC 235 Topic 3 General Trees, Binary Trees, Binary Search Trees.
Binary Tree. Some Terminologies Short review on binary tree Tree traversals Binary Search Tree (BST)‏ Questions.
1 Chapter 4 Trees Basic concept How tree are used to implement the file system How tree can be used to evaluate arithmetic expressions How to use trees.
Binary Search Tree. Tree  A nonlinear data structure consisting of nodes, each of which contains data and pointers to other nodes.  Each node has only.
ADT Binary Search Tree Ellen Walker CPSC 201 Data Structures Hiram College.
Chapter 6 (cont’) 1 AVL Tree. Search Trees 2 Two standard search trees: Binary Search Trees (non-balanced) All items in left sub-tree are less than root.
DATA STRUCTURE BS(IT)3rd. Tree An Introduction By Yasir Mustafa Roll No. BS(IT) Bahauddin Zakariya University, Multan.
Data Structures Lakshmish Ramaswamy. Tree Hierarchical data structure Several real-world systems have hierarchical concepts –Physical and biological systems.
Copyright © 2012 Pearson Education, Inc. Chapter 20: Binary Trees.
Concepts of Algorithms CSC-244 Unit 19 & 20 Binary Search Tree (BST) Shahid Iqbal Lone Computer College Qassim University K.S.A.
1 Trees General Trees  Nonrecursive definition: a tree consists of a set of nodes and a set of directed edges that connect pairs of nodes.
1 Trees What is a Tree? Tree terminology Why trees? What is a general tree? Implementing trees Binary trees Binary tree implementation Application of Binary.
1 CSC 211 Data Structures Lecture 25 Dr. Iftikhar Azim Niaz 1.
1 Trees General Trees  Nonrecursive definition: a tree consists of a set of nodes and a set of directed edges that connect pairs of nodes.
Trees By JJ Shepherd. Introduction Last time we discussed searching and sorting in a more efficient way Divide and Conquer – Binary Search – Merge Sort.
Lecture 9 Binary Trees Trees General Definition Terminology
Trees CSIT 402 Data Structures II 1. 2 Why Do We Need Trees? Lists, Stacks, and Queues are linear relationships Information often contains hierarchical.
Copyright © 2009 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Chapter 20: Binary Trees.
Fundamentals of Algorithms MCS - 2 Lecture # 17. Binary Search Trees.
DS.T.1 Trees Chapter 4 Overview Tree Concepts Traversals Binary Trees Binary Search Trees AVL Trees Splay Trees B-Trees.
TREES From root to leaf. Trees  A tree is a non-linear collection  The elements are in a hierarchical arrangement  The elements are not accessible.
Binary trees יום ראשון 08 אוקטובר 2017
Week 6 - Wednesday CS221.
Source Code for Data Structures and Algorithm Analysis in C (Second Edition) – by Weiss
Problems with dynamic arrays
Trees.
Tree.
CMSC 341 Introduction to Trees.
Section 8.1 Trees.
Data Structures & Algorithm Design
ITEC 2620M Introduction to Data Structures
Binary Trees, Binary Search Trees
Chapter 20: Binary Trees.
CS223 Advanced Data Structures and Algorithms
Chapter 21: Binary Trees.
Trees.
Trees Definitions Implementation Traversals K-ary Trees
Binary Trees, Binary Search Trees
Chapter 20: Binary Trees.
Trees.
Non-Linear data structures
Binary Trees, Binary Search Trees
NATURE VIEW OF A TREE leaves branches root. NATURE VIEW OF A TREE leaves branches root.
Presentation transcript:

Binary trees יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי Department of Computer Science-BGU

Tree Structure Tree structure is a way of representing the hierarchical nature of a structure in a graphical form. Mathematically, a tree is an acyclic connected graph where each node has zero or more children nodes and at most one parent node. Furthermore, the children of each node have a specific order. In computer science, a tree is a widely-used data structure that emulates a hierarchical tree structure with a set of linked nodes. יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי Department of Computer Science-BGU

Binary trees : definitions Binary tree is a tree data structure in which each node has at most two child nodes, usually distinguished as "left" and "right". nodes with children are parent nodes, and child nodes may contain references to their parents. A node that has a child is called the child's parent node (or ancestor node, or superior). A node has at most one parent. nodes that do not have any children are called leaf nodes. יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי Department of Computer Science-BGU

Binary trees : definitions (cont.) The height of a node is the length of the longest downward path to a leaf from that node. The height of the root is the height of the tree. The depth of a node is the length of the path to its root (i.e., its root path). An internal node or inner node is any node of a tree that has child nodes and is thus not a leaf node. A subtree of a tree T is a tree consisting of a node in T and all of its descendants in T. יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי Department of Computer Science-BGU

Common operations Enumerating all the items Enumerating a section of a tree Searching for an item Adding a new item at a certain position on the tree Deleting an item Removing a whole section of a tree (called pruning) Adding a whole section to a tree (called grafting) Finding the root for any node יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי Department of Computer Science-BGU

node – Definition and making typedef struct node_t { int data; struct node_t *right, *left; }node; node *make_node(int y) { node *newnode; newnode=(struct node *)malloc(sizeof(struct node)); newnode->data=y; newnode->right=newnode->left=NULL; return(newnode); } יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי Department of Computer Science-BGU

Sorting tree In computer science, a binary search tree (BST) or ordered binary tree is a node-based binary tree data structure which has the following properties: The left subtree of a node contains only nodes with keys less than the node's key. The right subtree of a node contains only nodes with keys greater than the node's key. Both the left and right subtrees must also be binary search trees. יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 Department of Computer Science-BGU 7

Examples יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 Department of Computer Science-BGU 8

Making Sorting Tree void main(){ node *root = NULL; int data; do { printf("\n Enter number:"); scanf("%d",& data); if(data==-1) break; root = build_tree(root, data); } while(1); } יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 Department of Computer Science-BGU 9

Adding node to sorting tree node * build_tree( node * root, int data){ if (root == NULL) root = newnode(data); else if (data data) root->left = build_tree(root->left, data); else root->right = build_tree(root->right, data); return root; } יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי Department of Computer Science-BGU

Binary Tree Traversal - Inorder void inorder(node *r){ if(r!=NULL){ inorder(r->left); printf("\t %d",r->data); inorder(r->right); } } יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי Department of Computer Science-BGU

Binary Tree Traversal - Preorder void preorder( node *r) { if(r!=NULL) { printf("\t %d",r->data); preorder(r->left); preorder(r->right); } } יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי Department of Computer Science-BGU

Binary Tree Traversal - Postorder void postorder( node *r) { if(r!=NULL) { postorder(r->left); postorder(r->right); printf("\t %d",r->data); } } יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי Department of Computer Science-BGU

Functions on Trees יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 Department of Computer Science-BGU 14

Print leaves void printLeaves (node * root) { if (root == NULL) return; if (root->left == NULL && root->right == NULL) printf("(%2d)", root->data); else { printLeaves(root->left); printLeaves(root->right); } { יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 Department of Computer Science-BGU 15

Size of tree int size(node * root) { if (root == NULL) return 0; return 1 + size(root->left) + size(root->right); { יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 Department of Computer Science-BGU 16

Height of tree int height(node * root) { int l_h, r_h; if (root == NULL) return -1; l_h = height(root->left); r_h = height(root->right); return 1 + (l_h > r_h) ? l_h : r_h; } יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 Department of Computer Science-BGU 17

Searching data in tree int search(node * root, int data) { if (root == NULL) return 0; if (root->data == data) return 1; return search(root->left, data) || search(root->right, data); } יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 Department of Computer Science-BGU 18

Searching in tree int search(node * root, int data) { if (root == NULL) return 0; if (root->data == data) return 1; if (data data) return search(root->left, data); else return search(root->right, data); } יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 Department of Computer Science-BGU 19

Freeing tree // frees all the allocated memory and sets the root to NULL void empty_tree(node **root) { if (!(*root)) return; empty_tree(&((*root)->left)); empty_tree(&((*root)->right)); free(*root); *root = NULL; } יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 יום חמישי 02 יולי 2015 Department of Computer Science-BGU 20