手撕力扣:对称二叉树;二叉树的前序、中序、后序遍历的递归/迭代解法

力扣101.对称二叉树
给定一个二叉树,检查它是否是镜像对称的。
对称二叉树(递归法)

class Solution {
   
public:

 bool isSymmetric(TreeNode* root) {
   
        if(!root)  return true;
        return isEqual(root->left,root->right);
     }
     bool isEqual(TreeNode* p,TreeNode* q)
     {
   
         if(!p&&!q)  return  true;
         if((!p&&q)||(p&&!q))  return false;
         if(p->val==q->val)
         {
   
             return isEqual(p->left,q->right)&&isEqual(p->right,q->left);
         }
         return false;
     }
};

迭代法:

class Solution {
   
public:
    bool isSymmetric(TreeNode* root) {
   
        if (root == NULL) return true;
        queue<TreeNode*> que;
        que.push(root->left);   // 将左子树头结点加入队列
        que.push(root->right);  // 将右子树头结点加入队列
        while (!que.empty()) {
     // 接下来就要判断这这两个树是否相互翻转
            TreeNode* leftNode = que.

你可能感兴趣的:(数据结构与算法,二叉树,算法,leetcode,stack)