LC49判斷二叉樹是否相等

茶味有點淡發表於2020-10-08

2020-10-8

這道題一開始我是想利用先序遍歷和中序遍歷序列可以唯一確定一棵二叉樹這個性質來解決問題,後來發現直接通過遞迴比較兩個根的左子樹是否相等且兩個根的右子樹是否相等來判斷更為簡便。

注意當兩個根節點都為空時,他們也是相等的。

https://www.nowcoder.com/questionTerminal/9a9e74b71f944efab9992925f7f9a65e

/**
 * struct TreeNode {
 *	int val;
 *	struct TreeNode *left;
 *	struct TreeNode *right;
 * };
 */

class Solution {
public:
    /**
     * 
     * @param p TreeNode類 
     * @param q TreeNode類 
     * @return bool布林型
     */
    bool isSameTree(TreeNode* p, TreeNode* q) {
        // write code here
        if(p == NULL || q == NULL)
            return p == q;
        if(p->val != q->val)
            return false;
        return isSameTree(p->left, q->left) && isSameTree(p->right, q->right);
    }
};

 

相關文章