剑指offer——对称的二叉树

题目链接:请实现一个函数,用来判断一颗二叉树是不是对称的。注意,如果一个二叉树同此二叉树的镜像是同样的,定义其为对称的。

 

解题思路:

用栈来存储。

 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 }

 

posted @ 2019-05-17 09:51  王爷爱吃秋刀鱼  阅读(124)  评论(0编辑  收藏  举报