今天日常一道二叉树相关题目:100. 相同的树
两个二叉树相同,当且仅当两个二叉树的结构完全相同,且所有对应节点的值相同。所以用搜索的方式判断二叉树是否相同。
class Solution {
public:
bool isSameTree(TreeNode* p, TreeNode* q) {
if(p == nullptr && q == nullptr) return true;//如果两个二叉树都为空,则两个二叉树相同。
else if(p == nullptr || q == nullptr) return false;//如果两个二叉树中有且只有一个为空,则两个二叉树一定不相同。
else if(p-> val != q-> val) return false;//如果两个二叉树都不为空,那么首先判断它们的根节点的值是否相同,若不相同则两个二叉树一定不同.
else return isSameTree(p-> left, q-> left) && isSameTree(p-> right, q-> right);//若相同,再分别判断两个二叉树的左子树是否相同以及右子树是否相同。
}
};
这是一个递归的过程,因此可以使用深度优先搜索,递归地判断两个二叉树是否相同。
网友评论