leetcode101. 对称二叉树

一:题目

在这里插入图片描述

二:上码

/**
 * Definition for a binary tree node.
 * public 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;
 *     }
 * }
 */
class Solution {
    /**
        思路:
            1.我们是利用层序遍历 每次入队的不再是一个结点
                1>:首次入队是根节点的左右孩子
                2>:然后我们每次出对是分别是左右子树上的两个结点。我们对这个两个结点进行比较
                    是否为空 值是否相等
                3>:然后再依次入队的是  左孩子的左节点 右孩子的右节点  左孩子的右节点 右孩子的左节点
            
     */
    public boolean isSymmetric(TreeNode root) {

            boolean ans = levelOrder(root);
            return ans;
    }

    public boolean levelOrder (TreeNode root) {
        
       Deque<TreeNode> queue =  new LinkedList<>();    

        //这里是不用判断空的  因为我们需要用空值 进行判断是否返回false呢
        queue.push(root.left);
        queue.push(root.right);
        
    
        while (!queue.isEmpty()) {

            TreeNode l_node = queue.pop();
            TreeNode r_node = queue.pop();

            if (l_node == null && r_node == null) continue;

            //右节点为空 左节点不空
            //左节点不空 右节点为空
            //都不为空 但值不相等

            if (l_node == null || r_node == null || r_node.val != l_node.val) return false;
        
            queue.push(l_node.left);
            queue.push(r_node.right);

            queue.push(l_node.right);
            queue.push(r_node.left);
        }

        return true;
    } 

}

最大收获 deque queue = new LinkedList<>(); 这个集合是可以存放空值 null的
ArrayDeque queue = new ArrayDeque<>();是不可以存放空值null的

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

天天向上的菜鸡杰!!

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值