LeetCode の挑戦ログ
Problem
https://leetcode.com/problems/merge-two-binary-trees/
- 2つのバイナリツリーを同階層でマージしたツリーを作る
Solution
/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */ class Solution { public TreeNode mergeTrees(TreeNode t1, TreeNode t2) { return merge(t1, t2); } private TreeNode merge(TreeNode t1, TreeNode t2) { if (t1 == null && t2 == null) { return null; } int mergedVal = (t1 == null ? 0 : t1.val) + (t2 == null ? 0 : t2.val); TreeNode merged = new TreeNode(mergedVal); merged.left = merge( (t1 == null ? null : t1.left), (t2 == null ? null : t2.left) ); merged.right = merge( (t1 == null ? null : t1.right), (t2 == null ? null : t2.right) ); return merged; } }
Impressions
- 再帰処理はかなり頭を使わないと書けない
- null チェックが美しさに欠ける(がどうすればいいものか)