computer notes - operations on binary tree
DESCRIPTION
There are a number of operations that can be defined for a binary tree. A binary tree is a useful data structure when two-way decisions must be made at each point in a process. One way of finding duplicates is to compare each number with all those that precede it.TRANSCRIPT
![Page 1: Computer notes - Operations on Binary Tree](https://reader033.vdocuments.site/reader033/viewer/2022061214/549d1e6eb47959d4318b4914/html5/thumbnails/1.jpg)
Class No.12
Data Structures
http://ecomputernotes.com
![Page 2: Computer notes - Operations on Binary Tree](https://reader033.vdocuments.site/reader033/viewer/2022061214/549d1e6eb47959d4318b4914/html5/thumbnails/2.jpg)
Operations on Binary Tree
There are a number of operations that can be defined for a binary tree.
If p is pointing to a node in an existing tree then left(p) returns pointer to the left subtree right(p) returns pointer to right subtree parent(p) returns the father of p brother(p) returns brother of p. info(p) returns content of the node.
http://ecomputernotes.com
![Page 3: Computer notes - Operations on Binary Tree](https://reader033.vdocuments.site/reader033/viewer/2022061214/549d1e6eb47959d4318b4914/html5/thumbnails/3.jpg)
Operations on Binary Tree
In order to construct a binary tree, the following can be useful:
setLeft(p,x) creates the left child node of p. The child node contains the info ‘x’.
setRight(p,x) creates the right child node of p. The child node contains the info ‘x’.
http://ecomputernotes.com
![Page 4: Computer notes - Operations on Binary Tree](https://reader033.vdocuments.site/reader033/viewer/2022061214/549d1e6eb47959d4318b4914/html5/thumbnails/4.jpg)
Applications of Binary Trees
A binary tree is a useful data structure when two-way decisions must be made at each point in a process.
For example, suppose we wanted to find all duplicates in a list of numbers:
14, 15, 4, 9, 7, 18, 3, 5, 16, 4, 20, 17, 9, 14, 5
http://ecomputernotes.com
![Page 5: Computer notes - Operations on Binary Tree](https://reader033.vdocuments.site/reader033/viewer/2022061214/549d1e6eb47959d4318b4914/html5/thumbnails/5.jpg)
Applications of Binary Trees
One way of finding duplicates is to compare each number with all those that precede it.
14, 15, 4, 9, 7, 18, 3, 5, 16, 4, 20, 17, 9, 14, 5
14, 15, 4, 9, 7, 18, 3, 5, 16, 4, 20, 17, 9, 14, 5
http://ecomputernotes.com
![Page 6: Computer notes - Operations on Binary Tree](https://reader033.vdocuments.site/reader033/viewer/2022061214/549d1e6eb47959d4318b4914/html5/thumbnails/6.jpg)
Searching for Duplicates
If the list of numbers is large and is growing, this procedure involves a large number of comparisons.
A linked list could handle the growth but the comparisons would still be large.
The number of comparisons can be drastically reduced by using a binary tree.
The tree grows dynamically like the linked list.
http://ecomputernotes.com
![Page 7: Computer notes - Operations on Binary Tree](https://reader033.vdocuments.site/reader033/viewer/2022061214/549d1e6eb47959d4318b4914/html5/thumbnails/7.jpg)
Searching for Duplicates
The binary tree is built in a special way. The first number in the list is placed in a
node that is designated as the root of a binary tree.
Initially, both left and right subtrees of the root are empty.
We take the next number and compare it with the number placed in the root.
If it is the same then we have a duplicate.http://ecomputernotes.com
![Page 8: Computer notes - Operations on Binary Tree](https://reader033.vdocuments.site/reader033/viewer/2022061214/549d1e6eb47959d4318b4914/html5/thumbnails/8.jpg)
Searching for Duplicates
Otherwise, we create a new tree node and put the new number in it.
The new node is made the left child of the root node if the second number is less than the one in the root.
The new node is made the right child if the number is greater than the one in the root.
http://ecomputernotes.com
![Page 9: Computer notes - Operations on Binary Tree](https://reader033.vdocuments.site/reader033/viewer/2022061214/549d1e6eb47959d4318b4914/html5/thumbnails/9.jpg)
Searching for Duplicates
14, 15, 4, 9, 7, 18, 3, 5, 16, 4, 20, 17, 9, 14, 5
14
http://ecomputernotes.com
![Page 10: Computer notes - Operations on Binary Tree](https://reader033.vdocuments.site/reader033/viewer/2022061214/549d1e6eb47959d4318b4914/html5/thumbnails/10.jpg)
Searching for Duplicates
15, 4, 9, 7, 18, 3, 5, 16, 4, 20, 17, 9, 14, 5
1415
http://ecomputernotes.com
![Page 11: Computer notes - Operations on Binary Tree](https://reader033.vdocuments.site/reader033/viewer/2022061214/549d1e6eb47959d4318b4914/html5/thumbnails/11.jpg)
Searching for Duplicates
15, 4, 9, 7, 18, 3, 5, 16, 4, 20, 17, 9, 14, 5
14
15
http://ecomputernotes.com
![Page 12: Computer notes - Operations on Binary Tree](https://reader033.vdocuments.site/reader033/viewer/2022061214/549d1e6eb47959d4318b4914/html5/thumbnails/12.jpg)
Searching for Duplicates
4, 9, 7, 18, 3, 5, 16, 4, 20, 17, 9, 14, 5
14
15
4
http://ecomputernotes.com
![Page 13: Computer notes - Operations on Binary Tree](https://reader033.vdocuments.site/reader033/viewer/2022061214/549d1e6eb47959d4318b4914/html5/thumbnails/13.jpg)
Searching for Duplicates
4, 9, 7, 18, 3, 5, 16, 4, 20, 17, 9, 14, 5
14
154
http://ecomputernotes.com
![Page 14: Computer notes - Operations on Binary Tree](https://reader033.vdocuments.site/reader033/viewer/2022061214/549d1e6eb47959d4318b4914/html5/thumbnails/14.jpg)
Searching for Duplicates
9, 7, 18, 3, 5, 16, 4, 20, 17, 9, 14, 5
14
154
9
http://ecomputernotes.com
![Page 15: Computer notes - Operations on Binary Tree](https://reader033.vdocuments.site/reader033/viewer/2022061214/549d1e6eb47959d4318b4914/html5/thumbnails/15.jpg)
Searching for Duplicates
9, 7, 18, 3, 5, 16, 4, 20, 17, 9, 14, 5
14
154
9
http://ecomputernotes.com
![Page 16: Computer notes - Operations on Binary Tree](https://reader033.vdocuments.site/reader033/viewer/2022061214/549d1e6eb47959d4318b4914/html5/thumbnails/16.jpg)
Searching for Duplicates
7, 18, 3, 5, 16, 4, 20, 17, 9, 14, 5
14
154
9
7
http://ecomputernotes.com
![Page 17: Computer notes - Operations on Binary Tree](https://reader033.vdocuments.site/reader033/viewer/2022061214/549d1e6eb47959d4318b4914/html5/thumbnails/17.jpg)
Searching for Duplicates
7, 18, 3, 5, 16, 4, 20, 17, 9, 14, 5
14
154
9
7
http://ecomputernotes.com
![Page 18: Computer notes - Operations on Binary Tree](https://reader033.vdocuments.site/reader033/viewer/2022061214/549d1e6eb47959d4318b4914/html5/thumbnails/18.jpg)
Searching for Duplicates
18, 3, 5, 16, 4, 20, 17, 9, 14, 5
14
154
9
7
18
http://ecomputernotes.com
![Page 19: Computer notes - Operations on Binary Tree](https://reader033.vdocuments.site/reader033/viewer/2022061214/549d1e6eb47959d4318b4914/html5/thumbnails/19.jpg)
Searching for Duplicates
18, 3, 5, 16, 4, 20, 17, 9, 14, 5
14
154
9
7
18
http://ecomputernotes.com
![Page 20: Computer notes - Operations on Binary Tree](https://reader033.vdocuments.site/reader033/viewer/2022061214/549d1e6eb47959d4318b4914/html5/thumbnails/20.jpg)
Searching for Duplicates
3, 5, 16, 4, 20, 17, 9, 14, 5
14
154
9
7
18
3
http://ecomputernotes.com
![Page 21: Computer notes - Operations on Binary Tree](https://reader033.vdocuments.site/reader033/viewer/2022061214/549d1e6eb47959d4318b4914/html5/thumbnails/21.jpg)
Searching for Duplicates
3, 5, 16, 4, 20, 17, 9, 14, 5
14
154
9
7
183
http://ecomputernotes.com
![Page 22: Computer notes - Operations on Binary Tree](https://reader033.vdocuments.site/reader033/viewer/2022061214/549d1e6eb47959d4318b4914/html5/thumbnails/22.jpg)
Searching for Duplicates
5, 16, 4, 20, 17, 9, 14, 5
14
154
9
7
183
5
http://ecomputernotes.com
![Page 23: Computer notes - Operations on Binary Tree](https://reader033.vdocuments.site/reader033/viewer/2022061214/549d1e6eb47959d4318b4914/html5/thumbnails/23.jpg)
Searching for Duplicates
5, 16, 4, 20, 17, 9, 14, 5
14
154
9
7
183
5
http://ecomputernotes.com
![Page 24: Computer notes - Operations on Binary Tree](https://reader033.vdocuments.site/reader033/viewer/2022061214/549d1e6eb47959d4318b4914/html5/thumbnails/24.jpg)
Searching for Duplicates
16, 4, 20, 17, 9, 14, 5
14
154
9
7
183
5
16
http://ecomputernotes.com
![Page 25: Computer notes - Operations on Binary Tree](https://reader033.vdocuments.site/reader033/viewer/2022061214/549d1e6eb47959d4318b4914/html5/thumbnails/25.jpg)
Searching for Duplicates
16, 4, 20, 17, 9, 14, 5
14
154
9
7
183
5
16
http://ecomputernotes.com
![Page 26: Computer notes - Operations on Binary Tree](https://reader033.vdocuments.site/reader033/viewer/2022061214/549d1e6eb47959d4318b4914/html5/thumbnails/26.jpg)
Searching for Duplicates
4, 20, 17, 9, 14, 5
14
154
9
7
183
5
16
4
http://ecomputernotes.com
![Page 27: Computer notes - Operations on Binary Tree](https://reader033.vdocuments.site/reader033/viewer/2022061214/549d1e6eb47959d4318b4914/html5/thumbnails/27.jpg)
Searching for Duplicates
20, 17, 9, 14, 5
14
154
9
7
183
5
16
20
http://ecomputernotes.com
![Page 28: Computer notes - Operations on Binary Tree](https://reader033.vdocuments.site/reader033/viewer/2022061214/549d1e6eb47959d4318b4914/html5/thumbnails/28.jpg)
Searching for Duplicates
20, 17, 9, 14, 5
14
154
9
7
183
5
16 20
http://ecomputernotes.com
![Page 29: Computer notes - Operations on Binary Tree](https://reader033.vdocuments.site/reader033/viewer/2022061214/549d1e6eb47959d4318b4914/html5/thumbnails/29.jpg)
Searching for Duplicates
17, 9, 14, 5
14
154
9
7
183
5
16 20
17
http://ecomputernotes.com
![Page 30: Computer notes - Operations on Binary Tree](https://reader033.vdocuments.site/reader033/viewer/2022061214/549d1e6eb47959d4318b4914/html5/thumbnails/30.jpg)
Searching for Duplicates
17, 9, 14, 5
14
154
9
7
183
5
16 20
17
http://ecomputernotes.com
![Page 31: Computer notes - Operations on Binary Tree](https://reader033.vdocuments.site/reader033/viewer/2022061214/549d1e6eb47959d4318b4914/html5/thumbnails/31.jpg)
Searching for Duplicates
9, 14, 5
14
154
9
7
183
5
16 20
17
http://ecomputernotes.com
![Page 32: Computer notes - Operations on Binary Tree](https://reader033.vdocuments.site/reader033/viewer/2022061214/549d1e6eb47959d4318b4914/html5/thumbnails/32.jpg)
C++ Implementation
#include <stdlib.h>template <class Object>class TreeNode { public: // constructors TreeNode() { this->object = NULL; this->left = this->right = NULL; }; TreeNode( Object* object ) { this->object = object; this->left = this->right = NULL; };
http://ecomputernotes.com
![Page 33: Computer notes - Operations on Binary Tree](https://reader033.vdocuments.site/reader033/viewer/2022061214/549d1e6eb47959d4318b4914/html5/thumbnails/33.jpg)
C++ ImplementationObject* getInfo() {
return this->object; };void setInfo(Object* object) {
this->object = object; };TreeNode* getLeft() {
return left; };void setLeft(TreeNode *left) {
this->left = left; };
http://ecomputernotes.com
![Page 34: Computer notes - Operations on Binary Tree](https://reader033.vdocuments.site/reader033/viewer/2022061214/549d1e6eb47959d4318b4914/html5/thumbnails/34.jpg)
C++ Implementation
TreeNode *getRight() {
return right; };void setRight(TreeNode *right) {
this->right = right; }; int isLeaf( ){
if( this->left == NULL && this->right == NULL ) return 1;
return 0;};
http://ecomputernotes.com
![Page 35: Computer notes - Operations on Binary Tree](https://reader033.vdocuments.site/reader033/viewer/2022061214/549d1e6eb47959d4318b4914/html5/thumbnails/35.jpg)
C++ Implementation
private:
Object* object;
TreeNode* left;
TreeNode* right;
}; // end class TreeNode
http://ecomputernotes.com
![Page 36: Computer notes - Operations on Binary Tree](https://reader033.vdocuments.site/reader033/viewer/2022061214/549d1e6eb47959d4318b4914/html5/thumbnails/36.jpg)
C++ Implementation
#include <iostream>#include <stdlib.h>#include "TreeNode.cpp"
int main(int argc, char *argv[]){
int x[] = { 14, 15, 4, 9, 7, 18, 3, 5, 16,4, 20, 17, 9, 14,5, -1};
TreeNode<int>* root = new TreeNode<int>();root->setInfo( &x[0] );for(int i=1; x[i] > 0; i++ ){
insert(root, &x[i] );}
}
http://ecomputernotes.com
![Page 37: Computer notes - Operations on Binary Tree](https://reader033.vdocuments.site/reader033/viewer/2022061214/549d1e6eb47959d4318b4914/html5/thumbnails/37.jpg)
C++ Implementation
void insert(TreeNode<int>* root, int* info){ TreeNode<int>* node = new TreeNode<int>(info); TreeNode<int> *p, *q; p = q = root; while( *info != *(p->getInfo()) && q != NULL ) { p = q; if( *info < *(p->getInfo()) ) q = p->getLeft(); else q = p->getRight(); }
http://ecomputernotes.com
![Page 38: Computer notes - Operations on Binary Tree](https://reader033.vdocuments.site/reader033/viewer/2022061214/549d1e6eb47959d4318b4914/html5/thumbnails/38.jpg)
C++ Implementation
if( *info == *(p->getInfo()) ){
cout << "attempt to insert duplicate: "
<< *info << endl;
delete node;
}
else if( *info < *(p->getInfo()) )
p->setLeft( node );
else
p->setRight( node );
} // end of insert
http://ecomputernotes.com
![Page 39: Computer notes - Operations on Binary Tree](https://reader033.vdocuments.site/reader033/viewer/2022061214/549d1e6eb47959d4318b4914/html5/thumbnails/39.jpg)
Trace of insert
17, 9, 14, 5
14
154
9
7
183
5
16 20
17pq
http://ecomputernotes.com
![Page 40: Computer notes - Operations on Binary Tree](https://reader033.vdocuments.site/reader033/viewer/2022061214/549d1e6eb47959d4318b4914/html5/thumbnails/40.jpg)
Trace of insert
17, 9, 14, 5
14
154
9
7
183
5
16 20
17p
q
http://ecomputernotes.com
![Page 41: Computer notes - Operations on Binary Tree](https://reader033.vdocuments.site/reader033/viewer/2022061214/549d1e6eb47959d4318b4914/html5/thumbnails/41.jpg)
Trace of insert
17, 9, 14, 5
14
154
9
7
183
5
16 20
17
pq
http://ecomputernotes.com
![Page 42: Computer notes - Operations on Binary Tree](https://reader033.vdocuments.site/reader033/viewer/2022061214/549d1e6eb47959d4318b4914/html5/thumbnails/42.jpg)
Trace of insert
17, 9, 14, 5
14
154
9
7
183
5
16 20
17
p
q
http://ecomputernotes.com
![Page 43: Computer notes - Operations on Binary Tree](https://reader033.vdocuments.site/reader033/viewer/2022061214/549d1e6eb47959d4318b4914/html5/thumbnails/43.jpg)
Trace of insert
17, 9, 14, 5
14
154
9
7
183
5
16 20
17
pq
http://ecomputernotes.com
![Page 44: Computer notes - Operations on Binary Tree](https://reader033.vdocuments.site/reader033/viewer/2022061214/549d1e6eb47959d4318b4914/html5/thumbnails/44.jpg)
Trace of insert
17, 9, 14, 5
14
154
9
7
183
5
16 20
17
p
q
http://ecomputernotes.com
![Page 45: Computer notes - Operations on Binary Tree](https://reader033.vdocuments.site/reader033/viewer/2022061214/549d1e6eb47959d4318b4914/html5/thumbnails/45.jpg)
Trace of insert
17, 9, 14, 5
14
154
9
7
183
5
16 20
17
pq
http://ecomputernotes.com
![Page 46: Computer notes - Operations on Binary Tree](https://reader033.vdocuments.site/reader033/viewer/2022061214/549d1e6eb47959d4318b4914/html5/thumbnails/46.jpg)
Trace of insert
17, 9, 14, 5
14
154
9
7
183
5
16 20
17
p
q
http://ecomputernotes.com
![Page 47: Computer notes - Operations on Binary Tree](https://reader033.vdocuments.site/reader033/viewer/2022061214/549d1e6eb47959d4318b4914/html5/thumbnails/47.jpg)
Trace of insert
17, 9, 14, 5
14
154
9
7
183
5
16 20
17
p
p->setRight( node );
node
http://ecomputernotes.com