Created
December 23, 2016 14:45
-
-
Save dheshanm/0051d59abb91fafc73fbec0fa7dad356 to your computer and use it in GitHub Desktop.
binaryTree
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package binaryTree; | |
import java.util.*; | |
/** | |
* Created by D'codex on December 2016. | |
*/ | |
public class framework { | |
public Tree intialize(){ | |
System.out.print("Enter the Number of Nodes in the Binary Tree :"); | |
Scanner in=new Scanner(System.in); | |
int count=in.nextInt(); | |
Tree bTree=new Tree(count); | |
int ID=0;int i=0; | |
while(i<count){ | |
System.out.println("Details for node#"+i); | |
System.out.print("Enter Data :"); | |
System.out.println(bTree.binaryTree[i].Data); | |
bTree.binaryTree[i].Data=in.nextLine(); | |
bTree.binaryTree[i].nodeID=String.valueOf(ID); | |
if(i!=0){ | |
boolean flag = true; | |
while (flag) { | |
String parentID=""; | |
System.out.print("Enter the node's Parent:"); | |
parentID = in.nextLine(); | |
if (bTree.binaryTree[Integer.valueOf(parentID)].childrenNodeCount >= 2) { | |
System.out.println("Parent Node is Full"); | |
} | |
else { | |
bTree.binaryTree[i].parentID = in.nextLine(); | |
bTree.binaryTree[Integer.valueOf(parentID)].childrenNodeCount=bTree.binaryTree[Integer.valueOf(parentID)].childrenNodeCount+1; | |
flag=false; | |
} | |
} | |
System.out.print("Is the node Parent's Left?"); | |
String temp=in.next(); | |
if(temp.equalsIgnoreCase("yes")||temp=="1"||temp.equalsIgnoreCase("y")){ | |
bTree.binaryTree[Integer.valueOf(bTree.binaryTree[i].parentID)].hasLeft=true; | |
bTree.binaryTree[Integer.valueOf(bTree.binaryTree[i].parentID)].leftNodeID=bTree.binaryTree[i].nodeID; | |
} | |
else { | |
bTree.binaryTree[Integer.valueOf(bTree.binaryTree[i].parentID)].hasRight = true; | |
bTree.binaryTree[Integer.valueOf(bTree.binaryTree[i].parentID)].rightNodeID=bTree.binaryTree[i].nodeID; | |
} | |
} | |
else | |
bTree.binaryTree[i].isRootPrimary=true; | |
bTree.binaryTree[i].check(); | |
i=i+1;ID=ID+1; | |
} | |
bTree.finalise(); | |
return bTree; | |
} | |
public void displayAll(Tree bTree){ | |
System.out.println("Running a Full Analysis on the Binary Tree"); | |
System.out.println("Printing nodes Details"); | |
for(int i=0;i<bTree.count;i++){ | |
System.out.println("Node #"+i); | |
System.out.println("PrimaryRoot :"+bTree.binaryTree[i].isRootPrimary); | |
System.out.println("isRoot :"+bTree.binaryTree[i].isRoot); | |
System.out.println("Data :"+bTree.binaryTree[i].Data); | |
System.out.println("Number of Children Nodes :"+bTree.binaryTree[i].childrenNodeCount); | |
System.out.println("hasLeft :"+bTree.binaryTree[i].hasLeft); | |
if(bTree.binaryTree[i].hasLeft) | |
System.out.println("LeftNodeID :"+bTree.binaryTree[i].leftNodeID); | |
System.out.println("hasRight :"+bTree.binaryTree[i].hasRight); | |
if(bTree.binaryTree[i].hasRight) | |
System.out.println("RightNodeID :"+bTree.binaryTree[i].rightNodeID); | |
System.out.println("parentID :"+bTree.binaryTree[i].fetchRoot()); | |
System.out.println("SiblingPairs (if any) :"+bTree.binaryTree[i].fetchSiblingID()); | |
System.out.println("____________________________________________________________________________"); | |
} | |
System.out.println("Tree Specifications"); | |
System.out.println("Total No. of Nodes :"+bTree.count); | |
System.out.println("Height of Tree :"+bTree.height); | |
System.out.println("Depth of Tree :"+bTree.depth); | |
System.out.println("Leaves :"+bTree.leaves); | |
System.out.println("Sibling Pairs :"+bTree.siblingPairs); | |
} | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package binaryTree; | |
/** | |
* Created by D'codex on December 2016. | |
*/ | |
public class main { | |
public static void main(String Args[]){ | |
framework Framework=new framework(); | |
Tree binaryTree=Framework.intialize(); | |
Framework.displayAll(binaryTree); | |
} | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package binaryTree; | |
import java.util.*; | |
/** | |
* Created by D'codex on December 2016. | |
*/ | |
public class node { | |
boolean hasLeft,hasRight; | |
boolean isRootPrimary,isRoot; | |
String Data; | |
String nodeID,leftNodeID,rightNodeID,parentID; | |
int childrenNodeCount; | |
node(){ | |
hasLeft=false; | |
hasRight=false; | |
Data=""; | |
childrenNodeCount=0; | |
} | |
void check(){ | |
if(hasLeft||hasRight) | |
isRoot=true; | |
} | |
String fetchRoot(){ | |
return parentID; | |
} | |
String fetchID(){ | |
return nodeID; | |
} | |
String fetchSiblingID(){ | |
return "("+String.valueOf(leftNodeID)+" "+String.valueOf(rightNodeID)+")"; | |
} | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package binaryTree; | |
import java.util.*; | |
/** | |
* Created by D'codex on December 2016. | |
*/ | |
public class Tree { | |
node binaryTree[]; | |
int count;int rootID,height,depth; | |
String siblingPairs,leaves; | |
Tree(int count){ | |
binaryTree=new node[count]; | |
this.count=count; | |
rootID=0; | |
height=0;depth=0; | |
} | |
void finalise(){ | |
for(int i=0;i<count;i++){ | |
if(binaryTree[i].childrenNodeCount==0) | |
leaves=String.valueOf(binaryTree[i].fetchID()); | |
if(binaryTree[i].childrenNodeCount==2){ | |
siblingPairs=binaryTree[i].fetchSiblingID(); | |
} | |
} | |
StringTokenizer st=new StringTokenizer(leaves); | |
while(st.hasMoreElements()){ | |
int counter=0; | |
int leafID=Integer.valueOf(st.nextToken()); | |
node temp=binaryTree[leafID]; | |
while(temp.isRootPrimary){ | |
temp=binaryTree[Integer.valueOf(temp.fetchRoot())]; | |
counter=counter+1; | |
} | |
if(counter>height) { | |
height = counter; | |
depth=height-1; | |
} | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment