题解 | #判断二叉树是否相等#

判断二叉树是否相等

http://www.nowcoder.com/practice/9a9e74b71f944efab9992925f7f9a65e

1、题目描述(判断二叉树是否相等)
        给出两个二叉树,请写出一个判断两个二叉树是否相等的函数。
        判断两个二叉树相等的条件是:两个二叉树的结构相同,并且相同的节点上具有相同的值。
1.1 示例1
        输入:{1},{1}
        返回值:true
1.2 示例2
        输入:{1,2},{1,#,2}
        返回值:false
2、解题思路
        很明显,这道题目考察的数据结构为,对于一棵二叉树而言,它既有左子树,又有右子树,因此我们判断两颗二叉树相等的充分必要条件为:根节点的值相等且左右子树相等

/**
 * 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 true;//都为空则两个二叉树相等
        if(p == NULL && q != NULL) return false;
        if(p != NULL && q == NULL) return false;//存在p或q一个为空,另一个不为空,则两个二叉树不相等
        if(p->val != q->val) return false;//根节点值不相等,则两个二叉树不相等
        else//根节点值相等
        {
            if(isSameTree(p->left,q->left) && isSameTree(p->right,q->right))//同时两颗二叉树对应根节点的左子树和右子树都分别相等,则两颗二叉树相等
                return true;
            return false;
        }
    }
};
全部评论

相关推荐

评论
1
收藏
分享
牛客网
牛客企业服务