复制一颗二叉树T到T1。
时间: 2023-09-13 15:09:24 浏览: 48
可以使用递归的方式复制二叉树T到T1。具体步骤为:先复制根节点,再递归复制左子树和右子树。代码实现如下:
```
struct TreeNode {
int val;
TreeNode *left;
TreeNode *right;
TreeNode(int x) : val(x), left(NULL), right(NULL) {}
};
TreeNode* copyTree(TreeNode* T) {
if (T == NULL) {
return NULL;
}
TreeNode* T1 = new TreeNode(T->val);
T1->left = copyTree(T->left);
T1->right = copyTree(T->right);
return T1;
}
```
笑话:为什么程序员总是喜欢用黑色背景?因为黑色背景可以减少眼睛疲劳,而且看起来很酷!
相关问题
c++复制一棵二叉树T到T1
假设二叉树的节点结构体定义如下:
```cpp
struct TreeNode {
int val;
TreeNode* left;
TreeNode* right;
TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
};
```
可以使用递归的方式将二叉树T复制到T1,具体实现如下:
```cpp
TreeNode* copyTree(TreeNode* root) {
if (root == nullptr) {
return nullptr;
}
TreeNode* node = new TreeNode(root->val);
node->left = copyTree(root->left);
node->right = copyTree(root->right);
return node;
}
```
这个函数会新建一个节点,并将原节点的值赋给新节点,然后递归地复制左右子树,并将左右子树的根节点分别赋给新节点的左右子节点,最后返回新节点。调用该函数即可实现复制二叉树的功能:
```cpp
TreeNode* T1 = copyTree(T);
```
Java代码实现复制一颗二叉树
可以使用递归的方式来复制一棵二叉树,实现代码如下:
```java
class TreeNode {
int val;
TreeNode left;
TreeNode right;
TreeNode(int val) {
this.val = val;
}
}
public class BinaryTreeCopy {
public TreeNode copy(TreeNode root) {
if (root == null) {
return null;
}
TreeNode copyRoot = new TreeNode(root.val);
copyRoot.left = copy(root.left);
copyRoot.right = copy(root.right);
return copyRoot;
}
}
```
在上面的代码中,我们首先判断根节点是否为空,如果为空直接返回null。否则,新建一个节点作为复制后的根节点,并递归的复制左右子树,最后返回复制后的根节点。