首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >sameTree用深度优先搜索判断两棵树是否相同 #算法#

sameTree用深度优先搜索判断两棵树是否相同 #算法#

作者头像
梦飞
发布于 2022-06-23 11:21:54
发布于 2022-06-23 11:21:54
4710
举报
文章被收录于专栏:csdn文章同步csdn文章同步

Given two binary trees, write a function to check if they are the same or not. 给定两个二叉树,写一个函数检查它们是否相同。 Two binary trees are considered the same if they are structurally identical and the nodes have the same value. 若两个二叉树的结构相同且节点有相同值,则它们相同。

代码语言:javascript
复制
·Example 1:

Input:     1         1
          / \       / \
         2   3     2   3

        [1,2,3],   [1,2,3]

Output: true

·Example 2:

Input:     1         1
          /           \
         2             2

        [1,2],     [1,null,2]

Output: false

·Example 3:

Input:     1         1
          / \       / \
         2   1     1   2

        [1,2,1],   [1,1,2]

Output: false

思路

只需要一个前序遍历(深度优先),每次判断分三种情况: (1)if (p != NULL && q != NULL) 两个根节点都不为空,则判断值是否相等,若值相等,则判断其左右子树是否都相等; (2)else if (p != NULL || q != NULL) 两个根节点只有一个不为空,则肯定不相等,return false; (3)else 两个根节点都为空,则相等。 判断子树是否相等可以用递归的方法进行。

代码

代码语言:javascript
复制
class Solution {
public:
    bool isSameTree(TreeNode* p, TreeNode* q) {
        if(p != NULL && q != NULL){
            if(p->val != q -> val) return false;
            return isSameTree(p->left, q->left) && isSameTree(p->right, q->right);
        }
        else if(p != NULL || q != NULL) return false;
        return true;
    }
};
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018-10-07,如有侵权请联系 cloudcommunity@tencent.com 删除
目录
  • 思路
  • 代码
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档