import java.util.LinkedList;
import java.util.List;
import java.util.Scanner;
public class BiTree {
private BiTree left;
private BiTree right;
private int data;
public static BiTree create(String des) {
Scanner scanner = new Scanner(System.in);
System.out.println(des);
int i = scanner.nextInt();
if (i == 0) {
return null;
}
BiTree root = new BiTree();
root.data = i;
root.left = create(root.data + "[左孩子]: ");
root.right = create(root.data + "[右孩子]: ");
return root;
}
public static void midPrint(BiTree biTree) {
if (biTree != null) {
midPrint(biTree.left);
System.out.print(biTree.data);
midPrint(biTree.right);
}
}
public static void prePrint(BiTree biTree) {
if (biTree != null) {
System.out.print(biTree.data);
prePrint(biTree.left);
prePrint(biTree.right);
}
}
public static void main(String[] args) {
List<BiTree> biTreeList = new LinkedList<>();
for (int i = 0; i < 2; i++) {
BiTree biTree = BiTree.create("[根节点]: ");
printBiTree(biTree);
biTreeList.add(biTree);
}
BiTree biTree = mergeBiTree(biTreeList.get(0), biTreeList.get(1));
// 打印合并后的树
printBiTree(biTree);
}
public static void printBiTree(BiTree biTree) {
System.out.println("前序遍历结果:");
BiTree.prePrint(biTree);
System.out.println();
System.out.println("中序遍历结果:");
BiTree.midPrint(biTree);
System.out.println();
}
public static BiTree mergeBiTree(BiTree leftTree, BiTree rightTree) {
if (leftTree == null) {
return rightTree;
}
if (rightTree == null) {
return leftTree;
}
leftTree.data = leftTree.data + rightTree.data;
leftTree.left = mergeBiTree(leftTree.left, rightTree.left);
// mergeBiTree(leftTree.left, rightTree.left);
leftTree.right = mergeBiTree(leftTree.right, rightTree.right);
// mergeBiTree(leftTree.right, rightTree.right);
return leftTree;
}
}
二叉树的合并(java实现)
最新推荐文章于 2024-08-20 10:37:42 发布