File tree Expand file tree Collapse file tree 1 file changed +84
-0
lines changed Expand file tree Collapse file tree 1 file changed +84
-0
lines changed Original file line number Diff line number Diff line change
1
+ // C++ program to print top
2
+ // view of binary tree
3
+
4
+ #include < bits/stdc++.h>
5
+ using namespace std ;
6
+
7
+ // Structure of binary tree
8
+ struct Node
9
+ {
10
+ Node *left;
11
+ Node *right;
12
+ int hd;
13
+ int data;
14
+ };
15
+
16
+ // function to create a new node
17
+ Node *newNode (int key)
18
+ {
19
+ Node *node = new Node ();
20
+ node->left = node->right = NULL ;
21
+ node->data = key;
22
+ return node;
23
+ }
24
+
25
+ // function should print the topView of
26
+ // the binary tree
27
+ void topview (Node *root)
28
+ {
29
+ if (root == NULL )
30
+ return ;
31
+ queue<Node *> q;
32
+ map<int , int > m;
33
+ int hd = 0 ;
34
+ root->hd = hd;
35
+
36
+ // push node and horizontal distance to queue
37
+ q.push (root);
38
+
39
+ cout << " The top view of the tree is : \n " ;
40
+
41
+ while (q.size ())
42
+ {
43
+ hd = root->hd ;
44
+
45
+ // count function returns 1 if the container
46
+ // contains an element whose key is equivalent
47
+ // to hd, or returns zero otherwise.
48
+ if (m.count (hd) == 0 )
49
+ m[hd] = root->data ;
50
+ if (root->left )
51
+ {
52
+ root->left ->hd = hd - 1 ;
53
+ q.push (root->left );
54
+ }
55
+ if (root->right )
56
+ {
57
+ root->right ->hd = hd + 1 ;
58
+ q.push (root->right );
59
+ }
60
+ q.pop ();
61
+ root = q.front ();
62
+ }
63
+
64
+ for (auto i = m.begin (); i != m.end (); i++)
65
+ {
66
+ cout << i->second << " " ;
67
+ }
68
+ }
69
+
70
+
71
+ int main ()
72
+ {
73
+
74
+ Node *root = newNode (1 );
75
+ root->left = newNode (2 );
76
+ root->right = newNode (3 );
77
+ root->left ->right = newNode (4 );
78
+ root->left ->right ->right = newNode (5 );
79
+ root->left ->right ->right ->right = newNode (6 );
80
+ cout << " Following are nodes in top view of Binary "
81
+ " Tree\n " ;
82
+ topview (root);
83
+ return 0 ;
84
+ }
You can’t perform that action at this time.
0 commit comments