leetcode 617. Merge Two Binary Trees 二叉树合并 + 深度优先遍历DFS
2017-12-21 09:14
651 查看
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.
本题题意很简单,直接合并即可
代码如下:
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.
本题题意很简单,直接合并即可
代码如下:
#include <iostream> #include <vector> #include <map> #include <set> #include <queue> #include <stack> #include <string> #include <climits> #include <algorithm> #include <sstream> #include <functional> #include <bitset> #include <numeric> #include <cmath> #include <regex> using namespace std; /* struct TreeNode { int val; TreeNode *left; TreeNode *right; TreeNode(int x) : val(x), left(NULL), right(NULL) {} }; */ class Solution { public: TreeNode* mergeTrees(TreeNode* t1, TreeNode* t2) { if (t1 == NULL && t2 == NULL) return NULL; else if (t1 == NULL && t2 != NULL) return t2; else if (t1 != NULL && t2 == NULL) return t1; else { TreeNode* root = new TreeNode(t1->val+t2->val); root->left = mergeTrees(t1->left,t2->left); root->right = mergeTrees(t1->right,t2->right); return root; } } };
相关文章推荐
- leetcode 236. Lowest Common Ancestor of a Binary Tree 最近公告祖先LCA + 二叉树 + 深度优先遍历DFS
- leetcode 662. Maximum Width of Binary Tree 二叉树最大宽度 + 深度优先遍历DFS
- leetcode 297. Serialize and Deserialize Binary Tree 二叉树的序列化和反序列化 + 深度优先遍历DFS
- leetcode 687. Longest Univalue Path 二叉树最长相等路径+ 深度优先遍历DFS
- leetcode 655. Print Binary Tree 矩形打印二叉树 + 深度优先遍历DFS
- leetcode 617. Merge Two Binary Trees(C语言,二叉树求和,递归)53
- LeetCode 617. Merge Two Binary Tree (合并两个二叉树)
- leetcode 110. Balanced Binary Tree(平衡二叉树的判断) DFS深度优先遍历
- leetcode 100. Same Tree 二叉树DFS深度优先遍历
- leetcode Merge Two Binary Trees 合并二叉树
- [LeetCode] Merge Two Binary Trees 合并二叉树
- leetcode 543. Diameter of Binary Tree 最长树的片段 + 深度优先遍历DFS
- 617. Merge Two Binary Trees(合并二叉树)
- LeetCode--Merge Two Binary Trees(合并两个二叉树)Python
- leetcode 671. Second Minimum Node In a Binary Tree 第二小数字 + 深度优先遍历DFS
- leetcode 226. Invert Binary Tree 反转二叉树 + DFS深度优先搜索
- LeetCode 617 Merge Two Binary Trees(递归合并二叉树)
- leetcode - 617. Merge Two Binary Trees【双树遍历 + null 模拟遍历 + 结点复用】
- 【Leetcode】Merge Two Binary Trees 合并两个二叉树
- leetcode 235. Lowest Common Ancestor of a Binary Search Tree 二叉搜索树BST的最近公共祖先LCA + 深度优先遍历DFS