判断两棵二叉树是否相等的算法 - C++ 代码实现
一棵二叉树和另一棵二叉树相等,当且仅当它们的根节点相等,并且左子树和右子树也相等。因此,可以通过递归的方式比较两棵二叉树是否相等。
具体实现如下:
- 如果两棵二叉树都为空,则它们相等,返回 true。
- 如果两棵二叉树中只有一棵为空,则它们不相等,返回 false。
- 如果两棵二叉树的根节点值不相等,则它们不相等,返回 false。
- 递归比较两棵二叉树的左子树和右子树是否相等,如果都相等,则它们相等,返回 true,否则返回 false。
代码实现如下:
bool isSameTree(TreeNode* p, TreeNode* q) {
if (!p && !q) {
return true; // 两棵二叉树都为空,它们相等
}
if (!p || !q) {
return false; // 两棵二叉树中只有一棵为空,它们不相等
}
if (p->val != q->val) {
return false; // 两棵二叉树的根节点值不相等,它们不相等
}
return isSameTree(p->left, q->left) && isSameTree(p->right, q->right); // 递归比较左子树和右子树是否相等
}
原文地址: https://www.cveoy.top/t/topic/nF9o 著作权归作者所有。请勿转载和采集!