复制二叉树pythone代码
时间: 2023-11-24 13:08:23 浏览: 31
Sure, here is a sample Python code for copying a binary tree:
```
class TreeNode:
def __init__(self, val=0, left=None, right=None):
self.val = val
self.left = left
self.right = right
class Solution:
def copyTree(self, root: TreeNode) -> TreeNode:
if not root:
return None
newRoot = TreeNode(root.val)
newRoot.left = self.copyTree(root.left)
newRoot.right = self.copyTree(root.right)
return newRoot
```
I hope this helps. Let me know if you have any other questions!
相关问题
二叉树复制代码,C语言
以下是二叉树复制的 C 语言代码:
```c
#include <stdio.h>
#include <stdlib.h>
// 二叉树结构体
struct TreeNode {
int val;
struct TreeNode *left;
struct TreeNode *right;
};
// 复制二叉树函数
struct TreeNode* copyTree(struct TreeNode* root) {
if (root == NULL) {
return NULL;
}
struct TreeNode* newNode = (struct TreeNode*)malloc(sizeof(struct TreeNode));
newNode->val = root->val;
newNode->left = copyTree(root->left);
newNode->right = copyTree(root->right);
return newNode;
}
// 创建二叉树函数
struct TreeNode* createTree() {
int val;
scanf("%d", &val);
if (val == -1) {
return NULL;
}
struct TreeNode* root = (struct TreeNode*)malloc(sizeof(struct TreeNode));
root->val = val;
root->left = createTree();
root->right = createTree();
return root;
}
// 先序遍历函数
void preOrder(struct TreeNode* root) {
if (root == NULL) {
return;
}
printf("%d ", root->val);
preOrder(root->left);
preOrder(root->right);
}
int main() {
printf("请输入二叉树的节点值,-1表示空节点:\n");
struct TreeNode* root = createTree();
printf("原二叉树先序遍历结果为:\n");
preOrder(root);
printf("\n");
struct TreeNode* newRoot = copyTree(root);
printf("复制后的二叉树先序遍历结果为:\n");
preOrder(newRoot);
printf("\n");
return 0;
}
```
在上述代码中,我们定义了一个结构体 `TreeNode`,表示二叉树的节点,包含了节点值 `val`,左子节点指针 `left` 和右子节点指针 `right`。其中,复制二叉树的函数 `copyTree` 使用了递归的方式进行复制。创建二叉树的函数 `createTree` 使用了递归的方式进行输入,遇到 -1 表示该节点为空。先序遍历函数 `preOrder` 使用了递归的方式进行遍历。
在 `main` 函数中,我们先使用 `createTree` 函数创建一个二叉树,并使用 `preOrder` 函数进行先序遍历。然后,我们使用 `copyTree` 函数复制该二叉树,并使用 `preOrder` 函数进行先序遍历。最后,释放二叉树的内存空间。
复制二叉树
复制二叉树是指创建一棵与原二叉树结构相同、节点值也相同的新二叉树。复制二叉树的算法可以采用递归或迭代的方式实现。下面是递归实现的示例代码:
```python
class TreeNode:
def __init__(self, val=0, left=None, right=None):
self.val = val
self.left = left
self.right = right
def clone_tree(root):
if not root:
return None
new_root = TreeNode(root.val)
new_root.left = clone_tree(root.left)
new_root.right = clone_tree(root.right)
return new_root
```
在这个示例中,我们定义了一个 `TreeNode` 类表示二叉树节点。 `clone_tree` 函数接收一个二叉树的根节点,并返回一个新的复制二叉树的根节点。如果根节点为空,直接返回 `None` 。否则,创建新节点 `new_root`,将其值设置为原根节点的值,然后递归调用 `clone_tree` 函数,分别将原根节点的左右子树复制到新根节点的左右子树上。最后返回新根节点即可。