package trees;
class Node
{
int val;
boolean leftThread = false; //Left Child is Null
boolean rightThread = false; //Right Child is Null
Node leftChild;
Node rightChild;
int getVal(){return val;}
Node(int v){val = v;}
Node() {}
}
public class ThreadedBTree
{
public void insertNode(Node root,int val)
{
Node currentNode =root;
while(true)
{
if(currentNode.getVal()>val )
{
if(currentNode.rightThread ==true)
{
Node newNode = new Node(val);
currentNode.rightChild = newNode;
currentNode.rightThread = false;
newNode.rightThread = true;
newNode.leftThread = true;
newNode.rightChild = currentNode.rightChild;
newNode.leftChild = currentNode;
return;
}else
{
currentNode = currentNode.rightChild;
continue;
}
}else
{
if(currentNode.leftThread ==true)
{
Node newNode = new Node(val);
currentNode.leftChild = newNode;
currentNode.leftThread = false;
newNode.leftThread = true;
newNode.rightThread = true;
newNode.leftChild = currentNode.leftChild;
newNode.rightChild = currentNode;
return ;
}else
{
currentNode = currentNode.leftChild;
continue;
}
}
//exit;
}
}
public ThreadedBTree()
{
}
public static void main(String[] args)
{
Node a = new Node(1);
ThreadedBTree TBT = new ThreadedBTree();
TBT.insertNode(new Node(2),2);
}
}