Given a binary tree, check whether it is a mirror of itself (ie, symmetric around its center).
Input: root={1,2,2,3,4,4,3}
Output: trueApproach
Java
public class SymmetricTree {public static void main(String[] args) {TreeNode tree = new TreeNode(1);tree.left = new TreeNode(2);tree.right = new TreeNode(2);tree.left.left = new TreeNode(3);tree.left.right = new TreeNode(4);tree.right.left = new TreeNode(4);tree.right.right = new TreeNode(3);System.out.println(isSymmetric(tree));}static boolean isMirror(TreeNode root1, TreeNode root2) {if (root1 == null && root2 == null)return true;if (root1 != null && root2 != null && root1.val == root2.val)return isMirror(root1.left, root2.right) &&isMirror(root1.right, root2.left);return false;}static boolean isSymmetric(TreeNode root) {return isMirror(root, root);}}class TreeNode {int val;TreeNode left;TreeNode right;TreeNode() {}TreeNode(int val) {this.val = val;}TreeNode(int val, TreeNode left, TreeNode right) {this.val = val;this.left = left;this.right = right;}}
C++
#include <bits/stdc++.h>using namespace std;//struct for treenodestruct TreeNode{int data;TreeNode *left;TreeNode *right;TreeNode(int data){this->data=data;this->left=NULL;this->right=NULL;}};bool isMirror(TreeNode *root1,TreeNode *root2){if(root1==NULL && root2==NULL)return true;if(root1!=NULL &&root2!=NULL && root1->data==root2->data)return isMirror(root1->left,root2->right)&&isMirror(root1->right,root2->left);return false;}bool isSymmetric(TreeNode* root){return isMirror(root,root);}int main(){TreeNode *root=new TreeNode(1);root->left=new TreeNode(2);root->right=new TreeNode(2);root->left->left=new TreeNode(3);root->left->right=new TreeNode(4);root->right->left=new TreeNode(4);root->right->right=new TreeNode(3);if(isSymmetric(root))cout<<"true";elsecout<<"false";return 0;}

No comments:
Post a Comment