28.对称的二叉树

it2022-05-05  174

题目描述

请实现一个函数,用来判断一颗二叉树是不是对称的。注意,如果一个二叉树同此二叉树的镜像是同样的,定义其为对称的。

---------------------------------------------------------------------------------------------------------

思路:首先根节点以及其左右子树,左子树的左子树和右子树的右子树相同

    左子树的右子树和右子树的左子树相同即可,采用递归

    非递归也可,采用栈或队列存取各级子树根节点

代码:

/* struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; TreeNode(int x) : val(x), left(NULL), right(NULL) { } }; */ class Solution { public: bool isSymmetrical(TreeNode* pRoot) { return checkSymmetrical(pRoot, pRoot); } bool checkSymmetrical(TreeNode* pRootLeft, TreeNode* pRootRight) { if (!pRootLeft && !pRootRight)return true; if (!pRootLeft || !pRootRight)return false; if (pRootLeft->val != pRootRight->val)return false; return checkSymmetrical(pRootLeft->left, pRootRight->right) && checkSymmetrical(pRootLeft->right, pRootRight->left); } };

 


最新回复(0)