LIntCode 等价二叉树

来源:互联网 发布:godaddy虚拟主机 java 编辑:程序博客网 时间:2024/06/03 05:07

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

您在真实的面试中是否遇到过这个题? Yes
样例
1 1
/ \ / \
2 2 and 2 2
/ /
4 4
就是两棵等价的二叉树。

1             1

/ \ / \
2 3 and 2 3
/ \
4 4
就不是等价的。

思路分析:

dfs遍历,判断每个结点是不是相同、

ac代码:

/** * 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 falg=1;    void dfs(TreeNode* a, TreeNode* b)    {        if(a==NULL && b==NULL)            return ;        if(a!=NULL && b!=NULL)        {            if(a->val!=b->val)            {                falg=0;                return ;            }            dfs(a->left,b->left);            dfs(a->right,b->right);        }        else        {            falg=0;            return ;        }    }    bool isIdentical(TreeNode* a, TreeNode* b) {        // Write your code here        dfs(a,b);        return falg;    }};
0 0
原创粉丝点击