leetcode Symmetric Tree 树

来源:互联网 发布:linux smart 硬盘读写 编辑:程序博客网 时间:2024/04/29 04:06

Given a binary tree, check whether it is a mirror of itself (ie, symmetric around its center).

For example, this binary tree is symmetric:

    1   / \  2   2 / \ / \3  4 4  3

But the following is not:

    1   / \  2   2   \   \   3    3

Note:
Bonus points if you could solve it both recursively and iteratively.

confused what "{1,#,2,3}" means? > read more on how binary tree is serialized on OJ.

递归,将左节点的右孩子和右节点的左孩子,和左节点的左孩子右节点的右孩子进行比较

class Solution {public:bool dfs(TreeNode*leftnode, TreeNode*rightnode){if (!leftnode&&!rightnode)//都为空{return true;}if (leftnode==NULL||rightnode==NULL)//其中一个为空肯定是不对称的{return false;}//左节点的右孩子和右节点的左孩子,和左节点的左孩子右节点的右孩子进行比较return leftnode->val == rightnode->val&&dfs(leftnode->left, rightnode->right) && dfs(leftnode->right, rightnode->left);}bool isSymmetric(TreeNode* root) {if (root == NULL) return true;return dfs(root->left, root->right);}};


0 0