排序二叉树创建
左子树的值小于父节点的值;
右子树的值大于父节点的值;
所有树节点均适用;
// 二叉树对象
public static class TreeNode {
private Integer val;
private TreeNode left;
private TreeNode right;
TreeNode() {
left = null;
right = null;
}
TreeNode(Integer val) {
this.val = val;
left = null;
right = null;
}
public Integer getVal() {
return val;
}
public void setVal(Integer val) {
this.val = val;
}
public TreeNode getLeft(){
return left;
}
public void setLeft(TreeNode left) {
this.left = left;
}
public TreeNode getRight(){
return right;
}
public void setRight(TreeNode right) {
this.right = right;
}
//重写Object类中的toString方法,输出所有成员变量的值
public String toString(){
return "{ val="+val+","+"left="+left+","+"right="+right+"}";
}
}
public class TreeService {
public static TreeNode createTree(TreeNode node, TreeNode newNode) {
if(node==null||node.getVal()==null||node.getVal()==0){
node.setVal(newNode.getVal());
}else {
if (node.getVal() > newNode.getVal()) {
if (node.getLeft() == null) {
node.setLeft(newNode);
} else {
createTree(node.getLeft(), newNode);//左子树递归
}
} else if(node.getVal() < newNode.getVal()) {
if (node.getRight() == null) {
node.setRight(newNode);
} else {
createTree(node.getRight(), newNode);//右子树递归
}
}
}
return node;
}
}
//调用
public static void main(String[] args) {
Long time1 = System.currentTimeMillis();
//Integer [] nodes = findInt(1000);
Integer [] nodes = {6,5,7,4,8,3,9,2,1};
TreeNode root = new TreeNode();
for(Integer node : nodes){
TreeNode newNode = new TreeNode();
newNode.setVal(node);
TreeService.createTree(root, newNode);
}
Long time2 = System.currentTimeMillis();
long time = time2-time1;
System.err.println("方法执行毫秒:"+time);
System.out.println("获取树对象为:"+root);
}