Lintcode:克隆二叉树

版权声明:本文未经博主允许不得转载。 https://blog.csdn.net/pianzang5201/article/details/91510629

问题:

深度复制一个二叉树。

给定一个二叉树,返回一个他的 克隆品 。

样例:

样例1:

输入: {1,2,3,4,5}
输出: {1,2,3,4,5}
解释:
样例中二叉树如下所示:
     1
   /  \
  2    3
 / \
4   5

样例2:

输入: {1,2,3}
输出: {1,2,3}
解释:
样例中二叉树如下所示:
   1
 /  \
2    3

python:

"""
Definition of TreeNode:
class TreeNode:
    def __init__(self, val):
        self.val = val
        self.left, self.right = None, None
"""

class Solution:
    """
    @param root: The root of binary tree
    @return: root of new tree
    """
    def cloneTree(self, root):
        # write your code here
        if root == None:
            return None
        result = TreeNode(root.val)
        if root.left == None:
            result.left = None
        else:
            result.left = self.cloneTree(root.left)
        if root.right == None:
            result.right = None
        else:
            result.right = self.cloneTree(root.right)
        return result

C++

/**
 * 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 *result = new TreeNode(root->val);
        if(root->left == NULL)
        {
            result->left = NULL;
        }else{
            result->left = cloneTree(root->left);
        }
        if(root->right == NULL)
        {
            result->right = NULL;
        }else{
            result->right = cloneTree(root->right);
        }
        return result;
    }
};

猜你喜欢

转载自blog.csdn.net/pianzang5201/article/details/91510629