算法作业HW28:LeetCode 100. Same Tree

来源:互联网 发布:steelcase淘宝 编辑:程序博客网 时间:2024/06/08 10:40

Description:

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.


Note:

Solution:

  Analysis and Thinking:

题目要求在给定两棵树的情况下,判断这两棵树是否相等,可以使用递归的方式实现


  Steps:

1. 判断当前两节点是否有任一为空,如果有,表示不相等,返回false

2. 如果当前两节点都为空,表示两棵树都已经遍历完毕,所有节点都相等,返回true

3. 如果两节点都非空,比较节点的值,如果不等,返回false

4. 递归对两节点的左子树以及右子树调用1~3步


Codes:

class Solution {public:    bool isSameTree(TreeNode *p, TreeNode *q) {        if(p && !q)            return false;        else if(!p && q)            return false;        else if(!p && !q)            return true;        else        {            if(p->val != q->val)                return false;            else                return isSameTree(p->left, q->left) && isSameTree(p->right, q->right);        }    }};


Results: