对称二叉树 2021-08-17 约 332 字 预计阅读 1 分钟 次阅读 文章目录 分析 请实现一个函数,用来判断一棵二叉树是不是对称的。 如果一棵二叉树和它的镜像一样,那么它是对称的。 样例 1 2 3 4 5 6 7 8 9 10 11 12 13 如下图所示二叉树[1,2,2,3,4,4,3,null,null,null,null,null,null,null,null]为对称二叉树: 1 / \ 2 2 / \ / \ 3 4 4 3 如下图所示二叉树[1,2,2,null,4,4,3,null,null,null,null,null,null]不是对称二叉树: 1 / \ 2 2 \ / \ 4 4 3 分析 时间复杂度是 $o(N)$, 因为 只遍历过一次 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 /** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */ class Solution { public: bool isSymmetric(TreeNode* root) { return dfs(root,root); } #define Node TreeNode bool dfs(Node *x,Node *y) { if(x==NULL && y==NULL) return true; if(!x || !y) return false; if(x->val != y->val) return false; return dfs(x->left,y->right) && dfs(x->right,y->left); } }; 文章作者 LYR 上次更新 2021-08-17 赞赏支持 微信打赏 支付宝打赏