leetcode100_相同的樹_二叉樹

/**
 * Definition for a binary tree node.
 * struct TreeNode {
 *     int val;
 *     TreeNode *left;
 *     TreeNode *right;
 *     TreeNode(int x) : val(x), left(NULL), right(NULL) {}
 * };
 */
class Solution {
public:
    bool isSameTree(TreeNode* p, TreeNode* q) {
        //如果都爲NULL,則相同樹,返回true.
        if(p==NULL && q==NULL) return true;
        //只有一個爲NULL,返回false.
        if(p==NULL || q==NULL) return false;
        //節點不同返回false.
        if(p->val!=q->val) return false;
        //返回左右子樹相不相同.
        return isSameTree(p->left,q->left) &&
                isSameTree(p->right, q->right); 
    }
};

1. 

複雜度分析

時間複雜度 : O(N),其中 N 是樹的結點數,因爲每個結點都訪問一次。

空間複雜度 : 最優情況(完全平衡二叉樹)時爲 O(log(N)),最壞情況下(完全不平衡二叉樹)時爲 O(N),用於維護遞歸棧。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章