二叉树的前序

1.递归

复制代码
public boolean isSymmetric(TreeNode root) {
        if(root == null){
            return true;
        }
        return deepCheck(root.left,root.right);
    }

    boolean deepCheck(TreeNode left, TreeNode right){
        //递归的终止条件是两个节点都为空
        //或者两个节点中有一个为空
        //或者两个节点的值不相等
        if(left == null && right == null){
            return true;
        }
        if(left == null || right == null){
            return false;
        }
        if(left.val  != right.val){
            return false;
        }

        //再递归的比较,左节点的左孩子,和右节点的右孩子
        //以及比较 左节点的右孩子 和右节点的左孩子
        return deepCheck(left.left,right.right) && deepCheck(left.right,right.left);
    }

2.循环迭代

复制代码
public boolean isSymmetric(TreeNode root) {
        Queue<TreeNode> q = new LinkedList<>();
        TreeNode u = root.left;
        TreeNode v  = root.right;
        if(root == null || (u==null && v==null)){
            return true;
        }
        q.offer(u);
        q.offer(v);
        while (!q.isEmpty()){
            u = q.poll();
            v = q.poll();
            if(u==null && v==null){
                continue;
            }
            if( (u==null || v==null) || (u.val != v.val) ){
                return false;
            }
            q.offer(u.left);
            q.offer(v.right);
            
            q.offer(u.right);
            q.offer(v.left);
        }
        return true;
    }
相关推荐
刚入坑的新人编程12 分钟前
暑期算法训练.3
c++·算法
草莓熊Lotso20 分钟前
【LeetCode刷题指南】--数组串联,合并两个有序数组,删除有序数组中的重复项
c语言·数据结构·其他·刷题
平哥努力学习ing24 分钟前
C语言内存函数
c语言·开发语言·算法
weixin_4196583130 分钟前
数据结构之B-树
java·数据结构·b树
H_HX_xL_L32 分钟前
数据结构的算法分析与线性表<1>
数据结构·算法
overFitBrain32 分钟前
数据结构-2(链表)
数据结构
xienda32 分钟前
数据结构排序算法总结(C语言实现)
数据结构·算法·排序算法
科大饭桶33 分钟前
数据结构自学Day8: 堆的排序以及TopK问题
数据结构·c++·算法·leetcode·二叉树·c
拾光Ծ33 分钟前
【数据结构】 链表 + 手动实现单链表和双链表的接口(图文并茂附完整源码)
数据结构
minji...34 分钟前
数据结构 栈(2)--栈的实现
开发语言·数据结构·c++·算法·链表