在Java中,要实现TreeNode类的节点复制,你可以创建一个新的TreeNode对象,并将原始节点的值、子节点等信息复制到新对象中。以下是一个简单的示例:
class TreeNode { int val; Listchildren; public TreeNode(int val) { this.val = val; this.children = new ArrayList<>(); } } public class TreeNodeCopy { public static void main(String[] args) { // 创建一个简单的树结构 TreeNode root = new TreeNode(1); TreeNode child1 = new TreeNode(2); TreeNode child2 = new TreeNode(3); TreeNode child3 = new TreeNode(4); root.children.add(child1); root.children.add(child2); child1.children.add(child3); // 复制树结构 TreeNode copiedRoot = copyTreeNode(root); // 输出复制后的树结构 System.out.println("Original tree:"); printTree(root, 0); System.out.println("\nCopied tree:"); printTree(copiedRoot, 0); } public static TreeNode copyTreeNode(TreeNode node) { if (node == null) { return null; } // 创建一个新的TreeNode对象,并将原始节点的值复制到新对象中 TreeNode copiedNode = new TreeNode(node.val); // 遍历原始节点的子节点,并将它们复制到新对象中 for (TreeNode child : node.children) { copiedNode.children.add(copyTreeNode(child)); } return copiedNode; } public static void printTree(TreeNode node, int level) { if (node == null) { return; } // 打印缩进 for (int i = 0; i < level; i++) { System.out.print(" "); } // 打印节点值 System.out.println(node.val); // 递归打印子节点 for (TreeNode child : node.children) { printTree(child, level + 1); } } }
这个示例中,我们首先创建了一个简单的树结构,然后使用copyTreeNode
方法复制了这个树结构。copyTreeNode
方法递归地遍历原始节点的子节点,并将它们复制到新对象中。最后,我们使用printTree
方法输出原始树结构和复制后的树结构,以便进行比较。