【Leetcode】Same Tree

来源:互联网 发布:淘宝图片下载器免费版 编辑:程序博客网 时间:2024/05/22 11:54

题目:

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.


解题思路:对两棵树进行遍历即可,这里采用先序遍历的方法。


代码:

/** * Definition for binary tree * 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) {        return PrerderTraverse(p,q);    }    private:    bool PrerderTraverse(TreeNode *p, TreeNode *q){        if(p==nullptr&&q==nullptr)return true;        if(p==nullptr||q==nullptr)return false;        if(p->val!=q->val){            return false;        }else{            return PrerderTraverse(p->left,q->left)&&PrerderTraverse(p->right,q->right);        }    }};

可以将先序遍历部分写的更加简洁:

/** * Definition for binary tree * 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==nullptr&&q==nullptr)return true;        if(p==nullptr||q==nullptr)return false;        return (p->val==q->val)&&isSameTree(p->left,q->left)&&isSameTree(p->right,q->right);    }};




0 0