package ĠL 1 0 1 Ċ Ċ import ĠBase . TreeNode Ċ import Ġapple . l af . J RS UI Utils Ċ import Ġjava . util .* ĊĊ Ċ fun Ġis Symmetric 1 ( root : ĠTreeNode ): ĠBoolean Ġ{ ĊĠĠĠ Ġreturn Ġis Mirror ( root , Ġroot ) Ċ } ĊĊ Ċ private Ġfun Ġis Mirror ( t 1 : ĠTreeNode ?, Ġt 2 : ĠTreeNode ?): ĠBoolean Ġ{ ĊĠĠĠ Ġif Ġ( t 1 Ġ== Ġnull Ġ&& Ġt 2 Ġ== Ġnull ) Ġreturn Ġtrue ĊĠĠĠ Ġif Ġ( t 1 Ġ== Ġnull Ġ|| Ġt 2 Ġ== Ġnull ) Ġreturn Ġfalse ĊĊĠĠĠ Ġreturn Ġt 1 .` val ` Ġ== Ġt 2 .` val ` ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ&& Ġis Mirror ( t 1 . left , Ġt 2 . right ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ&& Ġis Mirror ( t 1 . right , Ġt 2 . left ) Ċ Ċ } Ċ Ċ /** Ċ Ġ* Ġæ£Ģ æŁ¥ æłĳ çļĦ å¯¹ å¯¹ ç§° æĢ§ Ċ Ġ* Ċ Ġ*/ Ċ fun Ġis Symmetric 2 ( root : ĠTreeNode ): ĠBoolean Ġ{ ĊĠĠĠ Ġval Ġqueue : ĠQueue < TreeNode > Ġ= ĠLinkedList () ĊĠĠĠ Ġqueue . offer ( root ) ĊĠĠĠ Ġqueue . offer ( root ) ĊĊĠĠĠ Ġwhile Ġ(! queue . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġt 1 Ġ= Ġqueue . poll () ĊĠĠĠĠĠĠĠ Ġval Ġt 2 Ġ= Ġqueue . poll () ĊĊĠĠĠĠĠĠĠ Ġif Ġ( t 1 Ġ== Ġnull Ġ&& Ġt 2 Ġ== Ġnull ) Ġcontinue ĊĠĠĠĠĠĠĠ Ġif Ġ( t 1 Ġ== Ġnull Ġ|| Ġt 2 Ġ== Ġnull ) Ġreturn Ġfalse ĊĊĠĠĠĠĠĠĠ Ġif Ġ( t 1 .` val ` Ġ!= Ġt 2 .` val `) Ġreturn Ġfalse ĊĊĠĠĠĠĠĠĠ Ġqueue . offer ( t 1 . left ) ĊĠĠĠĠĠĠĠ Ġqueue . offer ( t 2 . right ) ĊĠĠĠĠĠĠĠ Ġqueue . offer ( t 1 . right ) ĊĠĠĠĠĠĠĠ Ġqueue . offer ( t 2 . left ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn Ġtrue Ċ } Ċ Ċ fun Ġmain () Ġ{ ĊĠĠĠ Ġprintln ( is Symmetric 1 ( TreeNode . mk Tree ("[ 1 , 2 , 2 , null , 3 , null , 3 ] "))) ĊĠĠĠ Ġprintln ( is Symmetric 2 ( TreeNode . mk Tree ("[ 1 , 2 , 2 , null , 3 , null , 3 ] "))) Ċ Ċ }