复制一颗二叉树(java语言)
- 在一棵二叉链表表示的二叉树中,复制一颗二叉树(利用java编程语言)

- 我的求解方法:
- 首先创建一个泛型的数组,目的是为了存放二叉树(新复制)的标明空子树的先根序列,数组的长度为原来需要复制的二叉树的长度(标明空子树的先根序列);
- 在原来的方法体内再次写一个方法,该方法是一个递归的方法,思想是利用先序遍历的思想,并且定义一个全局变量number,每当在数组中存放结点的时候number++,数组当前的下标往后移一位。当传入一个结点,若该结点是null,则存放在该数组中,number++;若该结点不为null,则将该结点存在数组中,number++,随后利用递归,先递归该结点的左孩子以及该数组,若此递归完成,则再递归该结点的右孩子以及该数组;
- 若全部遍历完成后,则返回原来的方法体中,此时数组已存在需要复制的表名空子树的先根序列,随后创建棵树,将该数组放入该构造构造方法,这样一颗树就复制完成了;
- 最后用先序,中序,后序分别遍历这两个二叉树,以此来验证复制的是否正确。
- createTree(int treeLength)是复制二叉树的方法
public BinaryTree createTree (int treeLength) {
T[] copyT = (T[])new Object[treeLength];
copy(this.root, copyT);
BinaryTree<T> copyTree = new BinaryTree<>(copyT);
return copyTree;
}
- BinaryTree的构造方法
public BinaryTree(T[] prelist) {
this.root = create(prelist);
}
private BinaryNode<T> create(T[] prelist) {
BinaryNode<T> p = null;
if (i <