我正在尝试从 0 和 1 的输入创建二叉树。例如,如果输入是 11010010,那么输出的树将以 1 作为根。2 是 1 的左孩子, 4 是右孩子。2 将有一个正确的孩子,它将是 3。那是树的尽头。当树按前序遍历时,数字 1-n(n 是输入中 1 的数量)被分配给被访问的节点。1 表示根有孩子。例如,第一个 1 表示访问了根,并将 1 放置为根。第二个 1 表示根有一个左孩子,而 2 则放在那里。后面的 0 表示它没有左孩子。下一个 1 表示它确实有一个正确的孩子,并且 3 被放置在那里,等等。我对如何创建这棵树感到困惑。我了解在创建树后遍历树,但不了解如何通过遍历树来创建树。任何帮助,将不胜感激。
package tree;
import java.io.*;
public class BinaryTree<ArrayList> implements Serializable
{
private static final long serialVersionUID = 1L;
protected static class Node<ArrayList> implements Serializable
{
private static final long serialVersionUID = 1L;
protected int data;
protected Node<ArrayList> left;
protected Node<ArrayList> right;
public Node(int data)
{
this.data = data;
left = null;
right = null;
}
public boolean isLeft()
{
return (left == null);
}
}
protected Node<ArrayList> root;;
public BinaryTree(int x)
{
Node<ArrayList> node = new Node<ArrayList>(x);
this.root = node;
}
public boolean isLeft()
{
return(root.left == null);
}
public void addLeft(int m, BinaryTree.Node<ArrayList> node)
{
root = new Node<ArrayList>(m);
node.left = root;
}
public void preorder(Node<ArrayList> temp)
{
if (temp!=null)
{
System.out.println(temp.data);
preorder(temp.left);
preorder(temp.right);
}
else
return;
}
}