代码随想录算法训练营第15天|二叉树的层序遍历和变种、226.翻转二叉树、101.对称二叉树

103 阅读1分钟

今日内容: 

●  层序遍历  10道题

●  226.翻转二叉树 

●  101.对称二叉树 

层序遍历

总共10道变种,都可以用bfs的思想解决

226. 翻转二叉树

也可以用层序遍历的思想去解决

class Solution {
    //迭代的做法
    public TreeNode invertTree(TreeNode root) {
        if(root == null)return null;
        Queue<TreeNode> queue = new LinkedList<TreeNode>();
        queue.add(root);
        while (!queue.isEmpty()) {
            TreeNode node = queue.poll();
            TreeNode tmp = node.left;
            node.left = node.right;
            node.right = tmp;
            if (node.left != null) {
                queue.add(node.left);
            }
            if (node.right != null) {
                queue.add(node.right);
            }
        }
        return root;
    }
}

101. 对称二叉树

class Solution {
    public boolean isSymmetric(TreeNode root) {
        if(root == null) {
            return false;
        }
        return recur(root.left, root.right);
    }
    private boolean recur(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 recur(left.left, right.right) && recur(left.right, right.left);
    }
}