Skip to main content

Level Order Tree Traversal (Level order traversal of a tree is breadth first traversal for the tree.)

https://www.geeksforgeeks.org/level-order-tree-traversal/

level order tree Traversal or breadth first traversal for the tree with full example.

please note below tree is binary search tree

working link=>https://stackblitz.com/edit/typescript-gvv3qk

//bfs Level Order Tree Traversal
//node class which holds data and left and right child if exits
class TreeNode<T>
{
   private data:T;
   private leftChild:TreeNode<T>=null;
   private rightChild:TreeNode<T>=null;
   constructor(_data:T)
   {
     this.data=_data;
   }
   getData()
   {
     return this.data;
   }
   setLeft(_node:TreeNode<T>)
   {
     this.leftChild=_node;
   }
   setRight(_node:TreeNode<T>)
   {
      this.rightChild=_node;
   }
   getLeft()
   {
     return this.leftChild;
   }
   getRight()
   {
     return this.rightChild;
   }
}

class  TreeClass<T>
{
    //must be a root
   public root:TreeNode<T>=null;
   insert(data:T)
   {
     if(this.root==null)
     {
       this.root=new TreeNode<T>(data);
       this.root.setLeft(null);
       this.root.setRight(null);
     }else
     {
       this.insertNode(data,this.root)
     }

   }
   insertNode(data:T,rootNode=this.root)
   {
     
      if(data<rootNode.getData())
      {
          if(rootNode.getLeft()!=null)
          {
              this.insertNode(data,rootNode.getLeft());
          }else
          {
              let node=new TreeNode<T>(data);
              rootNode.setLeft(node);
              rootNode.getLeft().setLeft(null);
              rootNode.getLeft().setRight(null);
          }
      }else
      {
        if(rootNode.getRight()!=null)
          {
              this.insertNode(data,rootNode.getRight());
          }else
          {
               let node=new TreeNode<T>(data);
              rootNode.setRight(node);
              rootNode.getRight().setLeft(null);
              rootNode.getRight().setRight(null);
          }
      }
   }
   //Create an empty queue for level order tarversal or dfs
  bfs()
  {
    if(this.root==null)
    {
      return "Tree is empty";
    }else
    {
      //create a queue
      let queue:Array<TreeNode<T>>=[];
      queue.push(this.root);
      while(queue.length>0)
      {
         let node:TreeNode<T>= queue.shift();
          console.log(node.getData())
          if(node.getLeft()!=null)
          {
            queue.push(node.getLeft())
          }
          if(node.getRight()!=null)
          {
            queue.push(node.getRight())
          }
      }
    }
  }
  
}

var myTree=new TreeClass<string>();
myTree.insert("manish");
myTree.insert("sachin");
myTree.insert("deepak");
myTree.insert("ranjeet");
myTree.insert("neha");
myTree.insert("dolu");
myTree.bfs();

Comments

Popular posts from this blog

Better Memory management with PixiJS or How to manage cpu and cpu memory in PixiJS.

PixiJS is my favorite framework when i am looking for a web games specially for mobile or desktop  PixiJS is fast blazing fast and you can get a decent FPS even on older device.   so here is my optimization techniques for PixiJs 1. manage your sprites in a better way use spritesheet to reduce the draw calls create big sprite sheet which contain multiple sprites can be draw in gpu with a single draw call. use TexturePacker  https://www.codeandweb.com/texturepacker  best tool when its comes to spritesheet 2. for floating point calculation round off calculation for example let  speed = 0.75 ; let  position = 100 ; console . log ( Math . round ( speed * position )) 3. don't create very big canvas when u need a big canvas size game just try to create a small canvas and translate it. 4. its very important one managing TextureCache in memory you can get all TextureCache list by using  Object.entries(PIXI.utils.TextureCache); so even you use ap...

adding particles Effect in pixijs using https://pixijs.io/pixi-particles-editor/

adding particle in pixijs is very easy using the below tool more information can be found below https://github.com/pixijs/pixi-particles https://pixijs.io/pixi-particles-editor/ required packages  /// < reference path = "node_modules/pixi-particles/ambient.d.ts" /> import 'pixi-particles' code of particle delcare a     global variable   private emitter ?: Emitter ; const img = PIXI . Texture . from ( "./assets/images/particle.png" ); this . emitter = new Emitter ( this ,[ img ],{ "alpha" : { "start" : 0.62 , "end" : 0.39 }, "scale" : { "start" : 0.1 , "end" : 0.9 , "minimumScaleMultiplier" : 1.25 }, "color" : { "start" : "#ffff8f" , "end" : ...