题解 | #对称的二叉树#
对称的二叉树
https://www.nowcoder.com/practice/ff05d44dfdb04e1d83bdbdab320efbcb
import java.util.*; /* * public class TreeNode { * int val = 0; * TreeNode left = null; * TreeNode right = null; * public TreeNode(int val) { * this.val = val; * } * } */ public class Solution { boolean res = true; /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param pRoot TreeNode类 * @return bool布尔型 */ public boolean isSymmetrical (TreeNode pRoot) { // write code here Deque<TreeNode> queue = new LinkedList<>(); l2r(pRoot,queue); r2l(pRoot,queue); return res; } private void r2l(TreeNode pRoot, Deque<TreeNode> queue) { // TODO if(pRoot==null){ return; } r2l(pRoot.right,queue); TreeNode cur = queue.poll(); res = res && compare(cur,pRoot) && compare(cur.right,pRoot.left) && compare(cur.left,pRoot.right); r2l(pRoot.left,queue); } private boolean compare(TreeNode cur, TreeNode pRoot) { // TODO if(cur == null && pRoot == null){ return true; } if(cur!=null && pRoot!=null && cur.val==pRoot.val){ return true; } return false; } private void l2r(TreeNode pRoot, Deque<TreeNode> queue) { // TODO if(pRoot==null){ return; } l2r(pRoot.left,queue); queue.add(pRoot); l2r(pRoot.right,queue); } }