Java二叉树(一)普通方式的创建
二叉树是一种树形结构,一种树形结构,一种重要的数据结构,一种树形结构。它的特点是每个节点至多只有两棵子树(即二叉树中不存在度大于2的节点),并且,二叉树的子树有左右顺序之分,其次序不能任意颠倒。
链表创建二叉树
链表类创建:创建一个节点类Node,在节点类中创建一个数据区用于存放数据,创建一个左子树指向的引用,创建一个右子树指向的引用。
链表中的数据区,使用结构体存储。
class Object{
public int value;
}
树类创建:创建一个树类Tree,在类中创建一个根节点。
链表类Node:
public class Node{
public Object data;
public Node leftNode;
public Node rightNode;
public Node(Object value){
this.data=value;
this.leftNode=null;
this.rightNode=null;
}
public(){}
public void setData(Object data){
this.data = data;
}
public Object getData(){
return data;
}
public void setLeftNode(Node node){
this.leftNode=node;
}
public Node getLeftNode(){
return leftNode;
}
public void setRightNode(Node node){
this.lRightNode=node;
}
public Node getRightNode(){
return RightNode;
}
}
树类Tree:
public class Tree{
public Node root;
public Tree(){
root=null;
}
public boolead isEmpty(){
if(root==null){ return true;}
return false;
}
public void addTreeNode(Object data){ // 普通方式创建二叉树
Node node = new Node(data);
Node temp;
if(isEmpty()){
root=node;
root.setLeftNode(null);
root.setRightNode(null);
}else{
temp=root;
while(true){
if(node.data.value<temp.data.value){
if(temp.getLeftNode()!=null){
if(node.data.value==temp.getLeftNode().data.value){
System.out.println(“此值树中已有,请换值!”);
break;
}else{
temp=temp.getLeftNode();
}
}else{
temp.setLeftNode(node);
break;
}
}else if(node.data.value>temp.data.value){
if(temp.getRightNode()!=null){
if(node.data.value==temp.getRightNode().data.value){
System.out.println(“此值树中已有,请换值!”);
break;
}else{
temp=temp.getRightNode();
}
}else{
temp.setRightNode(node);
break;
}
}else if(node.data.value==temp.data.value){
System.out.println(“此值树中已有,请换值!”);
break;
}
}
}
}
}