首先我创建了两个类,一个是节点类 Node.java,一个是ShiYan7.java。以下附上两个类的代码
//定义节点类
public class Node //单链表结点类,T 指定结点的元素类型
{
public int data; //数据域,存储数据元素
public Node left; //地址域,引用前驱结点
public Node right; //地址域,引用后继结点
public Node(int data, Node left,Node right) //构造结点,data 指定数据元素,next 指定后继结点
{
this.data = data; //T 对象引用赋值
this.left = left;
this.right = right; //Node 对象引用赋值
}
public Node() {
super();
}
public String toString() //返回结点数据域的描述字符串
{
return Integer.toString(this.data);
}
public int getData() {
return data;
}
public void setData(int data) {
this.data = data;
}
public Node getLeft() {
return left;
}
public void setLeft(Node left) {
this.left = left;
}
public Node getRight() {
return right;
}
public void setRight(Node right) {
this.right = right;
}
}
import java.util.Queue;
//构造二叉判定树
public class ShiYan7 {
static int counter = 0; //定义一个静态计数变量
public static Node createBiTree(Node root, int[] a, int i) {
if (i < a.length) { //判断是否溢出
root.data = a[i]; //设定 root 的 data 值
if (i == 0) { //判定是否是第一个元素
if (a[0]a[1]) {
Node lchild = new Node(); //如果小,则是前一个节点的左节点
root.left = createBiTree(lchild, a, ++counter);
}
}else{
if (counter!=a.length-1 && root.data < a[i+1]) { //排除 i+1 越界的情况 Node rchild = new Node(); root.right = createBiTree(rchild, a, ++counter); } else if(counter!=a.length-1 && root.data >= a[i+1]){
Node lchild = new Node(); //如果小,则是前一个节点的左节点
root.left = createBiTree(lchild, a, ++counter);
}
}
}
return root;
}
// 访问节点
public static void visitTNode(Node node) {
System.out.print(node.data + " ");
}
// 层次遍历
public static void levelTraverse(Node root) {
Queue queue = new LinkedList();
queue.offer(root); // 从根节点入队列
while (!queue.isEmpty()) { // 在队列为空前反复迭代
Node bitNode = queue.poll(); // 取出队列首节点
visitTNode(bitNode);
if (bitNode.left != null)
queue.offer(bitNode.left); // 左孩子入列
if (bitNode.right != null)
queue.offer(bitNode.right); // 右孩子入列
}
}
public static void main(String[] args) {
int[] a = {1,2,5,15,10,85,23,4};
Node root = new Node();
root = createBiTree(root, a, counter);
levelTraverse(root);
}
}
上边的即是我的代码,如果有错误,请在下方评论纠正,算法未作优化,但是这个方法构造一棵树还是可以的哈~
© 2018 www.qingketang.net 鄂ICP备18027844号-1
武汉快勤科技有限公司 13554402156 武汉市东湖新技术开发区关山二路特一号国际企业中心6幢4层7号
扫码关注,全站教程免费播放
订单金额:
支付金额:
支付方式: