leetCode 101. Symmetric Tree 对称树
101. Symmetric Tree
Given a binary tree, check whether it is a mirror of itself (ie, symmetric around its center).
For example, this binary tree[1,2,2,3,4,4,3]
is symmetric:
1/\22/\/\3443
But the following[1,2,2,null,3,null,3]
is not:
1/\22\\33
代码如下:
/***Definitionforabinarytreenode.*structTreeNode{*intval;*TreeNode*left;*TreeNode*right;*TreeNode(intx):val(x),left(NULL),right(NULL){}*};*///思路://1.判断root是否为空,若空则返回true,否则false;//2.判断root->left,root->right是否同时为空,若为空则返回true;//3.判断root->left,root->right同时不为空时,将root->right反转,//然后判断新root->right和root->left是否为相同的树。classSolution{public:boolisSameTree(TreeNode*p,TreeNode*q){boolchildResult;if(NULL==p&&NULL==q)returntrue;if(NULL!=p&&NULL!=q&&p->val==q->val){returnchildResult=isSameTree(p->left,q->left)&&isSameTree(p->right,q->right);}returnfalse;}voidreverseTree(TreeNode*root){if(!root)return;TreeNode*p,*q;p=root->left;q=root->right;root->left=q;root->right=p;reverseTree(root->left);reverseTree(root->right);}boolisSymmetric(TreeNode*root){if((NULL==root)||(NULL==root->left&&NULL==root->right))returntrue;if(NULL!=root->left&&NULL!=root->right){reverseTree(root->right);returnisSameTree(root->left,root->right);}returnfalse;}};
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。