美文网首页
java 键盘输入 字符串 建立完全二叉树

java 键盘输入 字符串 建立完全二叉树

作者: 小y同学hh | 来源:发表于2018-12-12 19:11 被阅读0次

import java.util.ArrayList;

import java.util.List;

import java.util.Scanner;

public class Main4 {

public class Node{

public String value;

public Node left;

public Node right;

public Node(String value,Node left,Node right){

this.value = value;

this.left = left;

this.right = right;

}

public Node(String value) {

this.value = value;

}

public String getValue() {

return value;

}

public void setValue(String value) {

this.value = value;

}

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;

}

}

public static List<Node> list = new ArrayList<Node>();

class Creater{

public void createTree(String[] arr){

for(int i = 0;i < arr.length;i++){

if (!arr[i].equals("#")) {

Node node = new Node(arr[i], null, null);

list.add(node);

}else{

Node node = null;

list.add(node);

}

}

if (list.size() > 0) {

for(int i = 0;i < arr.length/2-1;i++){

if (list.get(2*i+1) != null) {

list.get(i).left = list.get(2*i+1);

}

if (list.get(2*i+2) != null) {

list.get(i).right = list.get(2*i+2);

}

}

}

int lastIndex = arr.length/2-1;

list.get(lastIndex).left = list.get(lastIndex*2+1);

if (arr.length % 2 == 1) {

list.get(lastIndex).right = list.get(lastIndex*2+2);

}

}

}

public static void prePrint(Node node){

if (node != null) {

System.out.print(node.value + " ");

prePrint(node.left);

prePrint(node.right);

}

}

public static void printTree(Node head) {

System.out.println("Binary Tree:");

printInOrder(head, 0, "H", 17);

}

public static void printInOrder(Node head, int height, String to, int len) {

if (head == null) {

return;

}

printInOrder(head.right, height + 1, "v", len);

String val = to + head.value + to;

int lenM = val.length();

int lenL = (len - lenM) / 2;

int lenR = len - lenM - lenL;

val = getSpace(lenL) + val + getSpace(lenR);

System.out.println(getSpace(height * len) + val);

printInOrder(head.left, height + 1, "^", len);

}

public static String getSpace(int num) {

String space = " ";

StringBuffer buf = new StringBuffer("");

for (int i = 0; i < num; i++) {

buf.append(space);

}

return buf.toString();

}

public static void theFirstTraversal(Node root) {  //先序遍历 

System.out.print(root.getValue() + " ");

        if (root.getLeft() != null) {  //使用递归进行遍历左孩子 

            theFirstTraversal(root.getLeft()); 

        } 

        if (root.getRight() != null) {  //递归遍历右孩子 

            theFirstTraversal(root.getRight()); 

        } 

    } 

public static void main(String[] args) {

Scanner in = new Scanner(System.in);

      String string = in.nextLine();

        String[] arrString = string.split(" ");

        for (int i = 0; i < arrString.length; i++) {

        arrString[i] = arrString[i].toString();

    }

Main4 m4 = new Main4();

Creater c = m4.new Creater();

c.createTree(arrString);

printTree(list.get(0));

theFirstTraversal(list.get(0));

System.out.println();

prePrint(list.get(0));

}

}

测试结果:

1 2 3 # # 6 7 # # # # # # # 8

Binary Tree:

                                                          v8v     

                                        v7v     

                        v3v     

                                        ^6^     

      H1H     

                        ^2^ 

相关文章

  • java 键盘输入 字符串 建立完全二叉树

    import java.util.ArrayList; import java.util.List; import...

  • 完全二叉树实现优先队列与堆排序

    本文的目标是要做出优先队列和堆排序两个Demo。 完全二叉树 优先队列 堆排序 完全二叉树 完全二叉树的定义是建立...

  • Scanner

    创建Scanner 创建一个键盘输入字符串 创建一个键盘输入整数 键盘输入两个int数字,并且求出和值。 键盘输入...

  • Java中.next()和.nextLine()

    问题引入 刚学Java时经常使用到Scanner类,其接受键盘输入的字符串方法有两种: .next()和.next...

  • Kotlin3.5字符串和正则表达式的处理

    Kotlin字符串与Java字符串完全相同。Kotlin通过提供一系列有用的扩展函数,使标准Java字符串使用起来...

  • 二叉树的层序序列化与反序列化

    二叉树的正序列化:把二叉树按照某种遍历方式的结果以某种格式保存为字符串,从而使得内存中建立起来的二叉树可以持久保存...

  • android键盘输入读取

    android键盘输入读取  监控android键盘输入方式有两种,一种在java层实现,重写onKeyDown和...

  • 根据二叉树的先序遍历结果输出中序遍历

    题目描述 编一个程序,读入用户输入的一串先序遍历字符串,根据此字符串建立一个二叉树(以指针方式存储)。 例如如下的...

  • 10. 二叉树遍历

    题目描述 编一个程序,读入用户输入的一串先序遍历字符串,根据此字符串建立一个二叉树(以指针方式存储)。 例如如下的...

  • 根据前序建二叉树

    题目(清华机试) 编一个程序,读入用户输入的一串先序遍历字符串,根据此字符串建立一个二叉树(以指针方式存储)。 例...

网友评论

      本文标题:java 键盘输入 字符串 建立完全二叉树

      本文链接:https://www.haomeiwen.com/subject/sziphqtx.html