Lintcode 等价二叉树

来源:互联网 发布:淘宝上的祛痘产品 编辑:程序博客网 时间:2024/05/17 02:29

1:问题描述

检查两棵二叉树是否等价。等价的意思是说,首先两棵二叉树必须拥有相同的结构,并且每个对应位置上的节点上的数都相等。

样例

    1             1   / \           / \  2   2   and   2   2 /             /4             4

就是两棵等价的二叉树。

    1             1   / \           / \  2   3   and   2   3 /               \4                 4

2:解题思路

从根节点开始判断两颗树是否相等,先判断结构是否相等,在判断左右子树上的值是否相等,在用递归的思想判断左右子树。

3:解题代码

/**
 * Definition of TreeNode:
 * class TreeNode {
 * public:
 *     int val;
 *     TreeNode *left, *right;
 *     TreeNode(int val) {
 *         this->val = val;
 *         this->left = this->right = NULL;
 *     }
 * }
 */
class Solution {
public:
    /**
     * @aaram a, b, the root of binary trees.
     * @return true if they are identical, or false.
     */
    bool isIdentical(TreeNode* a, TreeNode* b) {
       if(a==NULL&&b==NULL)return 1;
       if((a!=NULL&&b==NULL)||(a==NULL&&b!=NULL))return 0;
       if(a->val==b->val)
        {
            return isIdentical(a->left, b->left) && isIdentical(a->right, b->right);
        }
        return 0;
  
    }
};

4:感想

这道题还是比较简单,题目介绍的也很清楚,思路容易想到,就是判断树的结构还有对应结构的值是否相同就可以。

0 0
原创粉丝点击