题目链接:请实现一个函数,用来判断一颗二叉树是不是对称的。注意,如果一个二叉树同此二叉树的镜像是同样的,定义其为对称的。
解题思路:
用栈来存储。
1 /* 2 public class TreeNode { 3 int val = 0; 4 TreeNode left = null; 5 TreeNode right = null; 6 7 public TreeNode(int val) { 8 this.val = val; 9 10 } 11 12 } 13 */ 14 import java.util.*; 15 public class Solution { 16 boolean isSymmetrical(TreeNode pRoot) 17 { 18 if(pRoot == null) return true; 19 Stack<TreeNode> s = new Stack<>(); 20 s.push(pRoot.left); 21 s.push(pRoot.right); 22 while(!s.empty()) { 23 TreeNode right = s.pop();//成对取出 24 TreeNode left = s.pop(); 25 if(left == null && right == null) continue; 26 //continue 语句是跳过循环体中剩余的语句而强制执行下一次循环,其作用为结束本次循环, 27 //即跳过循环体中下面尚未执行的语句,接着进行下一次是否执行循环的判定。 28 if(left == null || right == null) return false; 29 if(left.val != right.val) return false; 30 //成对插入 31 s.push(left.left); 32 s.push(right.right); 33 s.push(left.right); 34 s.push(right.left); 35 } 36 return true; 37 } 38 }