java数据结构与算法之翻转二叉树

Posted wen-pan

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java数据结构与算法之翻转二叉树相关的知识,希望对你有一定的参考价值。

该题本来不是一个具有代表性的题目,其实质就是考了一个对于二叉树的遍历问题,但是由于在面试中我多次被问到该题,所以做一个记录。

题目描述

  • 给你一棵二叉树的根节点 root ,翻转这棵二叉树,并返回其根节点。

解法一(DFS)

/**
 * dfs法翻转二叉树(后序遍历)
 */
public TreeNode invertTree1(TreeNode root) 
    if (root == null) 
        return null;
    
    invertTree1(root.left);
    invertTree1(root.right);

    // 左右孩子遍历后,交换左右孩子
    TreeNode temp = root.left;
    root.left = root.right;
    root.right = temp;
    return root;

解法二(BFS)

/**
 * bfs解法
 */
public TreeNode invertTree(TreeNode root) 
    if (root == null) 
        return null;
    
    // 双端队列
    LinkedList<TreeNode> queue = new LinkedList<>();
    queue.addLast(root);

    while (!queue.isEmpty()) 
        TreeNode poll = queue.pollFirst();
        // 交换左右孩子的位置
        TreeNode temp = poll.left;
        poll.left = poll.right;
        poll.right = temp;

        // 左右孩子入队列
        if (poll.left != null) 
            queue.addLast(poll.left);
        
        if (poll.right != null) 
            queue.addLast(poll.right);
        
    

    return root;

以上是关于java数据结构与算法之翻转二叉树的主要内容,如果未能解决你的问题,请参考以下文章

java数据结构与算法之二叉树的最大宽度和最大深度问题

java数据结构与算法之二叉树的最大宽度和最大深度问题

数据结构与算法—翻转二叉树

java算法:翻转二叉树

翻转二叉树

JAVA数据结构与算法之顺序存储二叉树