Lintcode---克隆二叉树
深度复制一个二叉树。
给定一个二叉树,返回一个他的 克隆品 。
样例
给定一个二叉树:
1
/ \
2 3
/ \
4 5
返回其相同结构相同数值的克隆二叉树:
1 / \ 2 3 / \ 4 5
思路:
递归:用前序中序或者后序遍历,遍历每个节点,复制每个节点。
题目很简单,但需要注意,当根节点左右孩子都为空时,也不能将根节点直接返回,必须是将其拷贝才可以!
若直接返回根节点,则会提示,返回的是一个引用,而非拷贝!!!!!
/** * 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; } TreeNode* pHead=new TreeNode(root->val); if(root->left!=NULL){ pHead->left=cloneTree(root->left); } if(root->right!=NULL){ pHead->right=cloneTree(root->right); } return pHead; } };