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),空间复杂度和递归使用的栈空间有关。

好文推荐

评论可见,请评论后查看内容,谢谢!!!评论后请刷新页面。