leetcode101-对称二叉树(这题并不简单,但leetcode标记为了简单题)
101. 对称二叉树
首先是自己写的BFS
/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode() : val(0), left(nullptr), right(nullptr) {} * TreeNode(int x) : val(x), left(nullptr), right(nullptr) {} * TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {} * }; */ class Solution { public: bool isSymmetric(TreeNode* root) { if(root->left==nullptr&&root->right==nullptr) return true; queue<TreeNode*> qqq; qqq.push(root); while(!qqq.empty()) { int size=qqq.size(); vector<int> nums; for(int i=0;i<size;i++) { TreeNode *t=qqq.front(); qqq.pop(); if(t==nullptr) { nums.push_back(-500); //往数组中添加-500是为了辨别不存在的节点和其他节点 continue; } nums.push_back(t->val); qqq.push(t->left); qqq.push(t->right); } int size2=nums.size(); for(int i=0;i<size2/2;i++) { if(nums[i]!=nums[size2-1-i]) return false; //如果出现不对称的会直接在这里退出,不会死循环 } } return true; } };
DFS没有想到另外创建一个函数,递归调用原函数没通过。
/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode() : val(0), left(nullptr), right(nullptr) {} * TreeNode(int x) : val(x), left(nullptr), right(nullptr) {} * TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {} * }; */ class Solution { public: bool dfs(TreeNode* leftNode,TreeNode* rightNode) { if(leftNode==nullptr&&rightNode==nullptr) return true; if(leftNode&&rightNode==nullptr) return false; if(rightNode&&leftNode==nullptr) return false; if(leftNode->val!=rightNode->val) return false; return dfs(leftNode->left,rightNode->right)&&dfs(leftNode->right,rightNode->left); } bool isSymmetric(TreeNode* root) { return dfs(root->left,root->right); } };
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!