【每日刷题】相同的树

mac2022-06-30  90

题目地址

https://leetcode-cn.com/problems/same-tree/

题目描述:相同的树

给定两个二叉树,编写一个函数来检验它们是否相同。

如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。

例 1:

输入:

1 1 / \ / \ 2 3 2 3

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

输出: true

例 2:

输入:

1 1 / \ 2 2

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

输出: false

例 3:

输入:

1 1 / \ / \ 2 1 1 2

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

输出: false

解答

阅读理解题。

用递归检测即可。

首先判断 p 和 q 是不是 NULL,然后判断它们的值是否相等。

若以上判断通过,则递归对左右子结点做同样操作。

代码:

/** * Definition for a binary tree node. * 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 && !q) return true; if( !p || !q || p->val != q->val) return false; return isSameTree( p->left, q->left) && isSameTree( p->right, q->right); } };
最新回复(0)