Printing the **left view** of a binary tree involves printing the left-most node, at each level, in the binary tree.

Left view of a Binary tree; the nodes highlighted in orange are the tree's left view.

Printing the left view of the Binary tree, given above, would involve printing the nodes: $1, 2, 11,$ and $15$.

This problem is solved by recursively traversing each level in the tree(visiting the left node before the right node). Whenever we move to the next level, print the leftmost node in that level (Note: we traverse the left subtree before the right subtree). The variable `maxlevel`

is used to track the maximum level in the tree that is traversed so far. Each time a node with a level greater than `maxlevel`

is encountered, its value is printed, and the value of `maxlevel`

is updated to that value.

#include <bits/stdc++.h>using namespace std;class node {public:int data;node *left, *right;};// A function to create a new node in the treenode* newNode(int item){node* temp = new node();temp->data = item;temp->left = temp->right = NULL;return temp;}// Recursive function to print left view of a binary tree.// It takes a root, the current level, and// the max level so far of the binary treevoid leftViewUtil(node* root, int level, int* max_level){if (root == NULL)return;// If we are moving to a new level, print the first node(left-most)if (*max_level < level) {cout << root->data << "\t";*max_level = level;}leftViewUtil(root->left, level + 1, max_level);leftViewUtil(root->right, level + 1, max_level);}void leftView(node* root){int max_level = 0;leftViewUtil(root, 1, &max_level);}// Driver codeint main(){// creating the tree.node* root = newNode(1);root->left = newNode(2);root->right = newNode(4);root->left->left = newNode(11);root->left->left->right = newNode(15);root->right->left = newNode(9);root->right->right = newNode(3);leftView(root);return 0;}

Copyright ©2024 Educative, Inc. All rights reserved

TRENDING TOPICS