zoukankan      html  css  js  c++  java
  • 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;
        }
    };
    
    
    
    


  • 相关阅读:
    POJ2594拐点弯的二分
    poj1523赤裸裸的割点
    POJ2239二分匹配
    对java多线程的一些浅浅的理解
    POJ3216 最小路径覆盖
    POJ1719二分匹配
    [算法]本学期算法作业
    [离散数学II]2017.3.29
    [离散数学II]2017.3.29
    [概率论]2017.3.29
  • 原文地址:https://www.cnblogs.com/Allen-rg/p/7078934.html
Copyright © 2011-2022 走看看