您的位置:首页 > 编程语言 > C语言/C++

leetcode_100_Same Tree (C++)(easy)

2016-04-19 11:01 423 查看
Given two binary trees, write a function to check if they are equal or not.

Two binary trees are considered equal if they are structurally identical and the nodes have the same value.

思路:判断两个二叉树是不是相等 首先要结构相等 此外对应节点值相等 采用递归的方法 首先鉴定两棵树的root是否相等 再判断其左右子树的结构相等与否。本题难点在于边界条件的测试。两棵树其中有一树为空另一个树不空时的测试,以及两棵树都不空,但值不相等的情况下进行测试。

/**

 * 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) {

        if(p == NULL && q == NULL)

            return true;

        while(p != NULL && q != NULL)

        {

            if (p -> val == q -> val )

            {

                return(isSameTree(p -> left , q -> left) && isSameTree(p -> right , q -> right));

            }

            else

                return false;

        

        }

        if((p == NULL && q != NULL)^(p != NULL && q == NULL) == 1)/*异或为1表示一棵树空另一棵不空的情况*/

            return false;

    }

};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  leetcode