import org.testng.annotations.Test;
public class Suanfa {
@Test
public void mainTest() throws Exception{
String inputData= "51,41,40,39,#,#,#,42,#,#,55,52,#,#,56,#,#";
BiTree biTree = new BiTree(inputData);
Node root = biTree.CreateBiTree();
//biTree.XianYuPrint(root);
// biTree.ZhongXuPrint(root);
biTree.PrintLessThanNode(root, 41);
}
public class BiTree {
private String[] nodeDatas;
private int index = 0;
public BiTree(String inputtedValues) throws Exception {
if(inputtedValues==null || inputtedValues.isEmpty()){
throw new Exception("Null data.");
}
// if(inputtedValues.matches())
nodeDatas=inputtedValues.split(",");
}
public Node CreateBiTree() {
Node node = new Node();
if(index>=this.nodeDatas.length)
{
return null;
}
String data = this.nodeDatas[index++];
if(data.equalsIgnoreCase("#")){
return null;
}
else
{
node.setData(data);
node.setLnode(CreateBiTree());
node.setRnode(CreateBiTree());
}
return node;
}
public void XianYuPrint(Node root){
if(root!=null){
System.out.println(root.getData());
XianYuPrint(root.lnode);
XianYuPrint(root.rnode);
}
}
public void ZhongXuPrint(Node root){
if(root!=null){
ZhongXuPrint(root.lnode);
System.out.println(root.getData());
ZhongXuPrint(root.rnode);
}
}
//输出所有小于某个节点的所有节点
public void PrintLessThanNode(Node root, int value)
{
if(root==null){
return;
}
PrintLessThanNode(root.lnode,value);
if(Integer.parseInt(root.getData())<value){
System.out.println(root.getData());
}
else
{
return;
}
PrintLessThanNode(root.rnode,value);
}
}
public class Node
{
private String data;
private Node lnode ,rnode;
public void setData(String data){
this.data=data;
}
public String getData(){
return this.data;
}
public void setLnode(Node node){
this.lnode = node;
}
public void setRnode(Node node){
this.rnode = node;
}
}
}