1、问题描述
深度复制一个二叉树。给定一个二叉树,返回一个他的 克隆品 。
2、实现思路
类似于前序遍历,遍历原树的所有节点,将值赋值给新的树。
3、代码
/** * Definition of TreeNode: * class TreeNode { * public: * int val; * TreeNode *left, *right; * TreeNode(int val) { * this->val = val; * this->left = this->right = NULL; * } * } */ class Solution { public: /** * @param root: The root of binary tree * @return root of new tree */ TreeNode* cloneTree(TreeNode *root) { // Write your code here if (root==NULL) {return root;} TreeNode *p= new TreeNode; p->val=root->val; p->left=cloneTree(root->left); p->right=cloneTree(root->right); return p; } };
4、感想
类似于前序遍历,遍历原树的所有节点,将值赋值给新的树。每次递归都重新定义节点p,此位置不为空,将值赋给p,要每次返回p。
