Leetcode 226.翻转二叉树

题目描述

Leetcode 226.翻转二叉树_第1张图片

解析

怎么把二叉树翻转?通过观察,我们发现只要把每个节点的左右孩子进行交换就OK了。那怎么进行交换?有两种方式:1. 自顶向下翻转 2.自底向上翻转

自顶向下翻转(前序遍历)

从根节点开始,先把根节点左右子树翻转过来,再进入左子树,把左子树内部的左右子树进行翻转,同理把右子树内部的左右子树进行翻转,依此类推,,,最终把二叉树全部翻转过来。即先交换左右子树,再通过递归把内部的子树进行翻转,即先交换,再递归,在“递”的过程中解决问题。代码如下:

class Solution {
   
    public TreeNode invertTree(TreeNode root) {
   
        if(root == null) return root; //root为空直接返回

		//交换左右节点
        TreeNode temp = root.left;
        root.left = root.right;
        root.right = temp;

        invertTree(root.left); //递归,继续反转左子树
        invertTree

你可能感兴趣的:(算法,二叉树,队列)