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
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
Post a Comment