zoukankan      html  css  js  c++  java
  • Leetcode 617 Merge Two Binary Trees 二叉树

    题意:

         给定两棵树,将两棵树合并成一颗树

       输入

    	Tree 1                     Tree 2                  
              1                         2                             
             /                        /                             
            3   2                     1   3                        
           /                                                    
          5                             4   7                  
    输出 
    合并的树
    	     3
    	    / 
    	   4   5
    	  /     
    	 5   4   7

    方法1不需要提供额外内存,但是时间居然很长
     1 /**
     2  * Definition for a binary tree node.
     3  * type TreeNode struct {
     4  *     Val int
     5  *     Left *TreeNode
     6  *     Right *TreeNode
     7  * }
     8  */
     9 func mergeTrees(t1 *TreeNode, t2 *TreeNode) *TreeNode {
    10     if t1 == nil && t2 == nil{
    11         return nil
    12     }
    13     if t1 != nil && t2 == nil{
    14         return t1
    15     }
    16     if t1 == nil && t2 != nil{
    17         return t2
    18     }
    19     if t1 != nil && t2 != nil{
    20         t1.Val += t2.Val
    21         t1.Left = mergeTrees(t1.Left, t2.Left);
    22         t1.Right = mergeTrees(t1.Right, t2.Right);
    23     }
    24     return t1; 
    25 }

     方法2需要提供额外内存,但是时间居然比方法1少,简直不可思议

     1 /**
     2  * Definition for a binary tree node.
     3  * type TreeNode struct {
     4  *     Val int
     5  *     Left *TreeNode
     6  *     Right *TreeNode
     7  * }
     8  */
     9 func newTreeNode() *TreeNode{
    10     return &TreeNode{
    11     }
    12 }
    13 
    14 func dfs(m **TreeNode, t *TreeNode){
    15     
    16     if t == nil  {
    17         return ;
    18     }
    19     
    20     if (*m) == nil{
    21         (*m) =  newTreeNode()
    22     }
    23     
    24     (*m).Val += t.Val
    25     dfs(&((*m).Left),  t.Left)
    26     dfs(&((*m).Right), t.Right)
    27   
    28 }
    29  
    30 func mergeTrees(t1 *TreeNode, t2 *TreeNode) *TreeNode {
    31     if t1 == nil && t2 == nil {
    32         return nil
    33     }
    34     
    35     m :=  newTreeNode()
    36     
    37     dfs(&m, t1);
    38     dfs(&m, t2);
    39     
    40     return m; 
    41 }
  • 相关阅读:
    linux文件系统初探--Day2(3)
    linux文件系统初探--Day2(2)
    linux文件系统初探--Day2(1)
    linux文件系统初探--Day1
    LKD-虚拟文件系统
    linux-nova 安装
    per-file DAX 工作日志(2)
    linux 内核设计与实现——进程管理
    关于用户与服务端密码的校验问题 !mysql php
    [Err] 1055
  • 原文地址:https://www.cnblogs.com/onlyac/p/7010702.html
Copyright © 2011-2022 走看看