问题描述:
深度复制一个二叉树。
给定一个二叉树,返回一个他的 克隆品 。
样例给定一个二叉树:
1 / \ 2 3 / \ 4 5返回其相同结构相同数值的克隆二叉树:
1 / \ 2 3 / \ 4 5解题思路:
当二叉树为空时,返回空。当二叉树不为空时,定义一个新的二叉树节点clone_root,使clone_root赋值为root->val。用递归完成左子树和右子树的克隆。
代码实现:
/** * 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 NULL; else{ TreeNode *clone_root= new TreeNode(root->val); clone_root->left=cloneTree(root->left); clone_root->right=cloneTree(root->right); return clone_root; } } };
解题感悟:
clone_root的定义容易出现语法错误,要注意。