对称二叉树c++ 递归
时间: 2024-09-26 12:00:39 浏览: 4
对称二叉树是指一棵二叉树,它的左右两个子树是对称的,即从任一节点开始,左子树和右子树的结构完全一样,只是方向相反。在C++中,我们可以使用递归来检查一个二叉树是否对称。下面是一个简单的递归函数示例:
```cpp
// 定义二叉树节点
struct TreeNode {
int val;
TreeNode *left;
TreeNode *right;
TreeNode(int x) : val(x), left(NULL), right(NULL) {}
};
// 判断二叉树是否对称的递归函数
bool isSymmetric(TreeNode* root) {
if (root == nullptr || root->left == nullptr && root->right == nullptr) { // 空或只有一个节点的树都是对称的
return true;
}
// 如果左、右子树都不为空,并且它们的值相等且左右子树也是对称的
if (root->left && root->right && root->left->val == root->right->val &&
isSymmetric(root->left->left) && isSymmetric(root->right->right)) {
return true;
} else {
return false; // 否则不是对称的
}
}
```
这个函数首先检查根节点是否为空,或者是否只有单个节点。然后递归地检查每个节点的左子树和右子树,如果它们的值相等且子树也对称,那么整个树就是对称的。