LeetCode 617. Merge Two Binary Tree (合并两个二叉树)

Given two binary trees and imagine that when you put one of them to cover the other, some nodes of the two trees are overlapped while the others are not.

You need to merge them into a new binary tree. The merge rule is that if two nodes overlap, then sum node values up as the new value of the merged node. Otherwise, the NOT null node will be used as the node of new tree.

Example 1:

Input: 
	Tree 1                     Tree 2                  
          1                         2                             
         / \                       / \                            
        3   2                     1   3                        
       /                           \   \                      
      5                             4   7                  
Output: 
Merged tree:
	     3
	    / \
	   4   5
	  / \   \ 
	 5   4   7

 

Note: The merging process must start from the root nodes of both trees


题目标题:Tree

给定的二叉树形式

/**
   * Definition for a binary tree node.
   * public class TreeNode {
   *     int val;
   *     TreeNode left;
   *     TreeNode right;
   *     TreeNode(int x) { val = x; }
   * }
   */

给定两棵二叉树,把它们合并成一个二叉树,合并规则如下:如果两棵树的对应节点不为空,把这两个节点的和作为新树的节点,如果有一个节点为空,则把非空的节点作为新树的节点。

    分析:使用先序法,递归把两棵树的节点相加,节点为空的以0代替即可

public class solution{

//融合两颗二叉树
//1.进行简单非空判断
//2.非空节点相加,空的视作0即可
//3.使用递归的方式进行迭代
public void merge(TreeNode t1,TreeNode t2){
//1.非空判断
  if(t1==null&&t2==null)
   return;

//2.两个节点的合并成新节点的值(使用三目运算符进行非空筛选)
  int val= (t1==null?0:t1.val) + (t2==null?0:t2.val);

//3.合并成新的二叉树 值为val
  TreeNode newNode=new TreeNode(val); 

//4.左右子树进行递归
  newNode.left = merge(t1==null ? null : t1.left , t2==null ? null : t2.right);
  newNode.right= merge(t1==null ? null : t1.left , t2==null ? null : t2.right);
 
//返回最终合成的二叉树
return newNode;
}

}

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值