101. 对称二叉树
作者:互联网
✅做题思路or感想:
- 这题是要同时遍历左子树和右子树
- 遍历左子树的外侧和右子树的外侧
- 遍历左子树的内侧和右子树的内侧
- 最后判读是否外侧和内侧都是对称的
class Solution {
public:
bool dfs(TreeNode* left, TreeNode* right) {
//处理左右节点有空节点的情况,实际上也是处理递归到尽头时的情况,到尽头是就要触底反弹,返回值了
if (left != nullptr && right == nullptr)return false;
else if (left == nullptr && right != nullptr)return false;
else if (left == nullptr && right == nullptr)return true;
else if (left->val != right->val)return false;
bool leftTree = dfs(left->left, right->right); //遍历外侧
bool rightTree = dfs(left->right, right->left); //遍历内侧
return leftTree && rightTree; //看外侧和内侧是否都对称
}
bool isSymmetric(TreeNode* root) {
if (root == nullptr)return true;
return dfs(root->left, root->right);
}
};
标签:right,return,nullptr,dfs,遍历,二叉树,对称,101,left 来源: https://www.cnblogs.com/doomaa/p/16062032.html