101. 对称二叉树
题目描述
给你一个二叉树的根节点 root , 检查它是否轴对称。
示例 1:
输入:root = [1,2,2,3,4,4,3]
输出:true
示例 2:
输入:root = [1,2,2,null,3,null,3]
输出:false
提示:
- 树中节点数目在范围 [1, 1000] 内
- -100 <= Node.val <= 100
进阶:你可以运用递归和迭代两种方法解决这个问题吗?
解题方法
- C 递归
/*** Definition for a binary tree node.* struct TreeNode {* int val;* struct TreeNode *left;* struct TreeNode *right;* };*/
bool my_cmp(struct TreeNode* left, struct TreeNode* right) {if (NULL == left && NULL == right) {return true;}if (NULL == left || NULL == right) {return false;}if (left->val != right->val) {return false;}return (my_cmp(left->left, right->right) &&my_cmp(left->right, right->left));
}bool isSymmetric(struct TreeNode* root) {if (NULL == root) {return false;}return my_cmp(root->left, root->right);
}
复杂度分析
时间复杂度为 O(n),n 为树的节点数。
空间复杂度为 O(n),空间复杂度和递归使用的栈空间有关。