Skip to content

Latest commit

 

History

History
73 lines (54 loc) · 1.47 KB

100. Same Tree.md

File metadata and controls

73 lines (54 loc) · 1.47 KB

100. Same Tree

Problem Description

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:

Input: p = [1,2,3], q = [1,2,3]
Output: true

Example 2:

Input: p = [1,2], q = [1,null,2]
Output: false

Example 3:

Input: p = [1,2,1], q = [1,1,2]
Output: false

Analysis and Code

Recursive

  • TC - O(N)
  • Submission Detail
    • Runtime: 6 ms
    • Memory Usage: 10 MB
class Solution {
public:
    bool isSameTree(TreeNode* p, TreeNode* q) {
        if(p == NULL and q == NULL) return true;
        if(p == NULL or q == NULL) return false;
        if(p -> val == q -> val)
            return isSameTree(p -> left, q -> left) && isSameTree(p -> right, q -> right);
        return false;
    }
};

Two Lines of Code

  • Submission Detail
    • Runtime: 0 ms
    • Memory Usage: 9.9 MB
  • 透過 logical operator 可以大大減少執行時間
class Solution {
public:
    bool isSameTree(TreeNode* p, TreeNode* q) {
        if(p == NULL || q == NULL) return (p == q);
        return (p -> val == q -> val) && isSameTree(p -> left, q -> left) && isSameTree(p -> right, q -> right);
    }
};