100.Same Tree === ###### tags: `Easy`,`Tree`,`DFS`,`BFS`,`Binary Tree` [100. Same Tree](https://leetcode.com/problems/same-tree/) ### 題目描述 Given the roots of two binary trees `p` and `q`, write a function to check if they are the same or not. Two binary trees are considered the same if they are structurally identical, and the nodes have the same value. ### 範例 **Example 1:** ![](https://assets.leetcode.com/uploads/2020/12/20/ex1.jpg) ``` Input: p = [1,2,3], q = [1,2,3] Output: true ``` **Example 2:** ![](https://assets.leetcode.com/uploads/2020/12/20/ex2.jpg) ``` Input: p = [1,2], q = [1,null,2] Output: false ``` **Example 3:** ![](https://assets.leetcode.com/uploads/2020/12/20/ex3.jpg) ``` Input: p = [1,2,1], q = [1,1,2] Output: false ``` **Constraints**: * The number of nodes in both trees is in the range `[0, 100]`. * -10^4^ <= `Node.val` <= 10^4^ ### 解答 #### Javascript ```javascript= function isSameTree(p, q) { if (p === null && q === null) return true; if (p === null || q === null) return false; if (p.val !== q.val) return false; return isSameTree(p.left, q.left) && isSameTree(p.right, q.right); } ``` > [name=Marsgoat] [time= Jan 10, 2023] #### Python ```python= class Solution: def isSameTree(self, p: Optional[TreeNode], q: Optional[TreeNode]) -> bool: if not p and not q: return True if not p or not q: return False return p.val == q.val and self.isSameTree(p.left, q.left) and self.isSameTree(p.right, q.right) ``` > [name=Ron Chen][time=Tue, Jan 10, 2023] 分享討論區中發現的一行解法 ```python= def isSameTree(self, p, q): return p and q and p.val == q.val and all(map(self.isSameTree, (p.left, p.right), (q.left, q.right))) or p is q ``` #### c# ```csharp= public class Solution { public bool IsSameTree(TreeNode p, TreeNode q) { if (p == null && q == null) return true; if (p == null || q == null) return false; if (p.val != q.val) return false; return IsSameTree(p.left, q.left) && IsSameTree(p.right, q.right); } } ``` > [name=Jim][time=Tue, Jan 10, 2023] ### Reference [回到題目列表](https://hackmd.io/@Marsgoat/leetcode_every_day)