package buildBinaryTree;
/**
*
* @author:孙创
* @date:2017年3月12日
* @Discription:用链表建立一个二叉树
*/
public class BuildUseLinklist {
public static void main(String[] args) {
BuildUseLinklist a = new BuildUseLinklist();
a.BuildBinaryTree(new int[] { 1, 2, 3 });
}
public TreeNode RootNode;
public boolean isEmpty() {
return RootNode == null;
}
public TreeNode BuildBinaryTree(int[] values) {
for (int i = 0; i < values.length; i++) {
AddTreeNode(values[i]);
}
System.out.println("二叉树建立完毕");
return RootNode;
}
/**
* 向二叉树中添加元素
*
* @param datavalue
*/
private void AddTreeNode(int datavalue) {
TreeNode node = new TreeNode(datavalue);
if (isEmpty()) {
RootNode = node;
} else {
TreeNode n = RootNode;
while (true) {
if (node.datavalue <= n.datavalue) {
if (n.Left_Node != null) {
n = n.Left_Node;
} else {
n.Left_Node = node;
return;
}
} else if (node.datavalue > n.datavalue) {
if (n.Right_Node != null) {
n = n.Right_Node;
} else {
n.Right_Node = node;
return;
}
}
}
}
}
/**
*
* @author:孙创
* @date:2017年3月12日
* @Discription:定义每个节点的类型
*/
public class TreeNode {
public TreeNode Left_Node;
public TreeNode Right_Node;
public int datavalue;
public TreeNode(int datavalue) {
this.datavalue = datavalue;
this.Left_Node = null;
this.Right_Node = null;
}
}
}
用链表方式构建二叉树
最新推荐文章于 2021-03-31 20:05:31 发布