Posts

Showing posts from August, 2021

Spiral print of 2D matrix

  class   Solution { public:      vector < int >  spiralOrder ( vector < vector < int >>  & a )     {         vector< int > v;          int   sr  =  0 ,  er  =  a . size () -  1 ,  sc  =  0 ,                                     ec  =  a [ 0 ]. size () -  1 ,  i ;          while  ( sr  <=  er  &&  sc  <=  ec )         {              for  ( i  =  sc ;  i  <=  ec ;  i ++)       ...

All unique 3 pair numbers that adds equal to target sum

  class   Solution { public:      vector < vector < int >>  threeSum ( vector < int >  & a )     {         vector<vector< int >> vr;          int  i, sum, j, x, k, n =  a . size ();         sum =  0 ;          sort ( a . begin (),  a . end ());          for  (i =  0 ; i < n; i++)         {              if  (i !=  0  &&  a [i] ==  a [i -  1 ])                  continue ; ...

Balanced Binary Tree or not.

  #include   <bits/stdc++.h> using   namespace   std ; struct   TreeNode {      int   val ;      TreeNode  * left ;      TreeNode  * right ;      TreeNode () :  val ( 0 ),  left ( nullptr ),  right ( nullptr ) {}      TreeNode ( int   x ) :  val ( x ),  left ( nullptr ),  right ( nullptr ) {}      TreeNode ( int   x ,  TreeNode   * left ,  TreeNode   * right ) :                              val ( x ),  left ( left ),  right ( right ) {} }; class   pairr { public:      int   height ;      bool   balanced ; }; TreeNode   * BuildTree () {      int   d ; ...

Diameter of Binary tree (Optimized)

  #include   <bits/stdc++.h> using   namespace   std ; struct   TreeNode {      int   val ;      TreeNode  * left ;      TreeNode  * right ;      TreeNode () :  val ( 0 ),  left ( nullptr ),  right ( nullptr ) {}      TreeNode ( int   x ) :  val ( x ),  left ( nullptr ),  right ( nullptr ) {}      TreeNode ( int   x ,  TreeNode   * left ,  TreeNode   * right ) :                                val ( x ),  left ( left ),  right ( right ) {} }; TreeNode   * BuildTree () {      int   d ;      cin   >>   d ;      if  ( d  == - 1 )  ...

Diameter of binary tree (Un-optimized)

Image
#include   <bits/stdc++.h> using   namespace   std ; struct   TreeNode {      int   val ;      TreeNode  * left ;      TreeNode  * right ;      TreeNode () :  val ( 0 ),  left ( nullptr ),  right ( nullptr ) {}      TreeNode ( int   x ) :  val ( x ),  left ( nullptr ),  right ( nullptr ) {}      TreeNode ( int   x ,  TreeNode   * left ,  TreeNode   * right ) :                              val ( x ),  left ( left ),  right ( right ) {} }; // there will be three cases, the diameter may pass through root //secondly, the diameter would only be in the left part of rootnode // or the diameter would only be in right part of root node; // Note that t...

Find total nodes and sum of all nodes of a binary tree (Recursive)

Image
  #include   <bits/stdc++.h> using   namespace   std ; struct   TreeNode {      int   val ;      TreeNode  * left ;      TreeNode  * right ;      TreeNode () :  val ( 0 ),  left ( nullptr ),  right ( nullptr ) {}      TreeNode ( int   x ) :  val ( x ),  left ( nullptr ),  right ( nullptr ) {}      TreeNode ( int   x ,  TreeNode   * left ,  TreeNode   * right ) :                              val ( x ),  left ( left ),  right ( right ) {} }; TreeNode   * BuildTree () {      int   d ;      cin   >>   d ;      if  ( d  == - 1 )   ...

BFS (level order traversal with \n) of binary tree (iterative II)

Image
  #include   <bits/stdc++.h> using   namespace   std ; struct   TreeNode {      int   val ;      TreeNode  * left ;      TreeNode  * right ;      TreeNode () :  val ( 0 ),  left ( nullptr ),  right ( nullptr ) {}      TreeNode ( int   x ) :  val ( x ),  left ( nullptr ),  right ( nullptr ) {}      TreeNode ( int   x ,  TreeNode   * left ,  TreeNode   * right ) :                              val ( x ),  left ( left ),  right ( right ) {} }; TreeNode   * BuildTree () {      int   d ;      cin   >>   d ;      if  ( d  == - 1 )   ...

BFS (level order traversal) of binary tree (Iterative)

Image
#include   <bits/stdc++.h> using   namespace   std ; struct   TreeNode {      int   val ;      TreeNode  * left ;      TreeNode  * right ;      TreeNode () :  val ( 0 ),  left ( nullptr ),  right ( nullptr ) {}      TreeNode ( int   x ) :  val ( x ),  left ( nullptr ),  right ( nullptr ) {}      TreeNode ( int   x ,  TreeNode   * left ,  TreeNode   * right ) :                              val ( x ),  left ( left ),  right ( right ) {} }; TreeNode   * BuildTree () {      int   d ;      cin   >>   d ;      if  ( d  == - 1 )    ...

Height and Level Order Traversal of binary tree(Recursive)

#include   <bits/stdc++.h> using   namespace   std ; struct   TreeNode {      int   val ;      TreeNode  * left ;      TreeNode  * right ;      TreeNode () :  val ( 0 ),  left ( nullptr ),  right ( nullptr ) {}      TreeNode ( int   x ) :  val ( x ),  left ( nullptr ),  right ( nullptr ) {}      TreeNode ( int   x ,  TreeNode   * left ,  TreeNode   * right ) :                                 val ( x ),  left ( left ),  right ( right ) {} }; TreeNode   * BuildTree () {      int   d ;      cin   >>   d ;      if  ( d  == - 1 )   ...

Multiplication of large numbers (Given in string format)

  class   Solution { public:      string   multiply ( string   num1 ,  string   num2 )     {          if  ( num1  ==  "0"  ||  num2  ==  "0" )              return   "0" ;          if  ( num1  ==  "1" )              return   num2 ;          if  ( num2  ==  "1" )              return   num1 ;          if  ( num1 . size () ==  1  &&  num2 . size () ==  1 )         {           ...