Saturday, March 13, 2010

Experiment with Binary tree.

package com.newproject.model;

import java.util.ArrayList;
import java.util.List;

class Node
{
int iVal;
String nodeName;
Node leftRef;
Node rightRef;

Node(int argVal, String argStr)
{
this.iVal = argVal;
this.nodeName = argStr;
}
}

public class BNTree
{
static Node rootNode = new Node(100, "Root Node");
static List list = new ArrayList();
static Node tempNode = rootNode;
static public void buildTree(Node argNode)
{
Node traverseNode = rootNode;
boolean initFlag = false;
boolean isAssign = false;
if (rootNode.leftRef == null || rootNode.leftRef == null)
{
if (argNode.iVal < rootNode.iVal)
{
rootNode.leftRef = argNode;
}
else
{
rootNode.rightRef = argNode;
}
isAssign = true;

}

do
{
if (argNode.iVal < traverseNode.iVal && traverseNode.leftRef != null)
{
traverseNode = traverseNode.leftRef;
}
else if (argNode.iVal < traverseNode.iVal && traverseNode.leftRef == null)
{
traverseNode.leftRef = argNode;
isAssign = true;

}
if (argNode.iVal > traverseNode.iVal && traverseNode.rightRef != null)
{
traverseNode = traverseNode.rightRef;
}
else if (argNode.iVal > traverseNode.iVal && traverseNode.rightRef == null)
{
traverseNode.rightRef = argNode;
isAssign = true;
}
} while (!initFlag && !isAssign);
}

static void preOrder(Node argRootNode)
{
if (argRootNode != null)
{
if(argRootNode.leftRef != null)
{
preOrder(argRootNode.leftRef);
}
System.out.println(argRootNode.iVal);
if(argRootNode.rightRef!=null)
{
preOrder(argRootNode.rightRef);

}
}
}

public static void main(String[] args)
{
Node nodeOne = new Node(10, "Ten");
Node nodeTwo = new Node(200, "TwoH");
Node nodeThree = new Node(30, "Thirty");
Node nodeFour = new Node(2, "Two");
Node nodeFive = new Node(20, "Twenty");
Node nodeSix = new Node(150, "150");
Node nodeThreeH = new Node(300, "150");
Node nodeS = new Node(1, "150");
buildTree(nodeOne);
buildTree(nodeTwo);
buildTree(nodeThree);
buildTree(nodeFour);
buildTree(nodeFive);
buildTree(nodeSix);
buildTree(nodeThreeH);
buildTree(nodeS);
preOrder(rootNode);
}
}

No comments:

Post a Comment