問題描述
給你一個二叉樹的根節點 root , 檢查它是否軸對稱。
分析
由於該題不僅要考慮資料的軸對稱,還要考慮結構的軸對稱,例如
所以需要兩個方向的遞迴同時進行,過程中比較對稱結點的值是否相等。
class Solution {
public:
bool solve(TreeNode* l_root, TreeNode* r_root) {
bool x, y;
if (l_root == nullptr && r_root == nullptr) {
return true;
}
if (l_root == nullptr || r_root == nullptr) {
return false;
}
if (l_root->val != r_root->val) {
return false;
}
x = solve(l_root->left, r_root->right);
y = solve(l_root->right, r_root->left);
if (x && y) {
return true;
}
return false;
}
bool isSymmetric(TreeNode* root) {
return solve(root, root);
}
};